convertir date yyyymmdd à yyJJJ ou la Date Julienne
Besoin d'une formule dans excel et c# pour convertir les données en "aaaammjj" format de format de date julienne "yyJJJ"? Où "JJJ" est la date Julienne de jour soumises. Est JJJ un nombre de 1 à 365 ou le 999 ou 366? Je ne pense pas que son 366, mais nous avons d'année bissextile, de sorte qu'il pourrait être une année bissextile.
Dans Excel, je suis en train d'utiliser les éléments suivants:
=Year() & DAYS360("20110101","20110930")
En C# j'utilise maintenant() pour obtenir la date du jour. Mais je veux le nombre de jours entre le 1er janvier et la date actuelle. Vous ne savez pas si c'est le bon prototype de formule:
Prepend Two digit year format to the following
Number of Days between "20110101" and "20110930" in "YY" format
- Dans .NET,
DateTime.DayOfYear
fonctionne très bien. Pour Excel, voir cpearson.com/excel/jdates.htm
Vous devez vous connecter pour publier un commentaire.
Au lieu de traiter vous-même en C#, vous pouvez simplement utiliser le JulianCalendar classe
Et à faire aujourd'hui, dans le calendrier Julien, vous pouvez faire:
EDIT:
Et j'ai réalisé que je n'avais pas vous aider avec un bon moyen pour obtenir un résultat dans le YYJJJ format que vous cherchiez, c'est très simple:
Malheureusement, je ne pense pas qu'il y a un équivalent de
dateTime.ToString("JJJ");
que va donner le jour de l'année, donc mon petitstring.Format()
de travail, mais cela fonctionne tout aussi bien!EDIT2:
Donc Phoog m'a éduqué un peu en dessous dans les commentaires, et a souligné que vous ne cherchiez pas aujourd'hui dans le Calendrier Julien, qui est ce que le code ci-dessus donnerait à l'égard de la JulianCalendar classe. Plutôt, il semble que vous êtes à la recherche pour l'Ordinal date (cette pièce ajoutée pour le futur lecteur de précisions). Je vais laisser le ci-dessus de sorte que quelqu'un ne veut pas faire la même erreur que j'ai fait. Ce que vous voulez vraiment, je crois, est le code de la première édition, mais sans le JulianCalendar entreprise, de sorte que:
DayOfYear
pour 2011-09-30).today
pourdateInJulian
.Selon ces articles, vous devriez être en utilisant le terme "Ordinal date" plutôt que "Julian date":
http://en.wikipedia.org/wiki/Ordinal_date
http://en.wikipedia.org/wiki/Julian_day
Selon la première, la norme ISO pour l'ordinal date spécifie une année à 4 chiffres, et que la plage est de 1 à 366, si le 1er janvier est de 1.
Bien sûr, cela signifie que les dates entre Mars et décembre aura deux valeurs possibles, selon que la date tombe dans une année bissextile.
Bala de la solution (avec le
+ 1
option donnés dans les commentaires) sera donc suffisante.EDIT: Le
DateTime
type propre DayOfYear bien, comme Jim Mischel a souligné, est la plus simple et probablement plus rapide.1
ou0
pour le premier janvier. Si ce n'est pas possible ou souhaitable, je ne l'utiliserais1
.en c#, vous pouvez faire
(dt - firstJan).Days + 1;
Je crois que ce que vous cherchez est: est-ce
Cela vous donnera une chaîne de caractères qui est toujours de 5 chiffres, avec une année à deux chiffres et les 3 chiffres du jour de l'an.
Keveks réponse vous donnera une chaîne qui peut être de 3, 4 ou 5 chiffres.