Порядковый Формат Даты C#
проблема:
вам даются даты в формате YYYYddd, который является годом, за которым следует день года, с 1 по 365 (366). Например, сегодня будет 2009135 (5/15/2009).
каков наилучший способ создания нового datetime из этого? В Ruby, я знаю, что есть конструктор, который принимает два числа вот так
Date.ordinal(2009, 135)
есть ли аналогичный конструктор для C#?
3 ответов
Хм, я не уверен, что есть более прямой способ, но это должно работать
new DateTime(year, 1, 1).AddDays(day - 1);
Как насчет:
new DateTime(ordinal / 1000, 1, 1).AddDays((ordinal % 1000) - 1);
Это зависит от того, что День 1 2009 представлен как 2009001, а не 20091. Если это последнее, это немного сложнее (хотя, конечно, все еще не совсем сложно).
Я бы попытался отойти от такого формата довольно быстро, хотя - это не совсем обычный, и он совершенно не читается. Предполагая формат "2009001", он, по крайней мере, сортируется разумно, но я не могу думать о многом другом в его пользу.
int year = 2009;
int month = 1;
int day = 1;
int dayOfYear= 135;
DateTime myDate = new DateTime(year, month, day);
myDate.AddDays(dayOfYear - 1);