序数日期格式C#

时间:2009-05-15 19:50:04

标签: c# datetime ordinal

问题:

您的日期格式为YYYYddd,即年份,然后是年份的日期,1到365(366)。例如今天是2009135(2009年5月15日)。

从中创建新日期时间的最佳方法是什么?在Ruby中我知道有一个构造函数需要两个数字,如此

Date.ordinal(2009, 135)

是否有类似的C#构造函数?

3 个答案:

答案 0 :(得分:10)

嗯,我不确定是否有更直接的方式,但这应该有效

new DateTime(year, 1, 1).AddDays(day - 1);

答案 1 :(得分:3)

怎么样:

new DateTime(ordinal / 1000, 1, 1).AddDays((ordinal % 1000) - 1);

这依赖于2009年第1天代表2009001而不是20091。如果是后者,它会稍微复杂一些(当然,虽然仍然不是很难)。

我会尽快摆脱这种格式 - 它不是一个普通的格式,它完全不可读。假设“2009001”格式至少合理排序,但我不能想到其他有利的东西。

答案 2 :(得分:1)

int year = 2009;
int month = 1;
int day = 1;
int dayOfYear= 135;

DateTime myDate  = new DateTime(year, month, day);
myDate.AddDays(dayOfYear - 1);