【发布时间】:2010-10-26 14:41:56
【问题描述】:
问题:
您将获得格式为 YYYYddd 的日期,即年份,然后是一年中的日期,从 1 到 365(366)。例如今天是 2009135 (5/15/2009)。
从中创建新日期时间的最佳方法是什么?在 Ruby 中,我知道有一个构造函数接受两个数字,像这样
Date.ordinal(2009, 135)
C#有类似的构造函数吗?
【问题讨论】:
问题:
您将获得格式为 YYYYddd 的日期,即年份,然后是一年中的日期,从 1 到 365(366)。例如今天是 2009135 (5/15/2009)。
从中创建新日期时间的最佳方法是什么?在 Ruby 中,我知道有一个构造函数接受两个数字,像这样
Date.ordinal(2009, 135)
C#有类似的构造函数吗?
【问题讨论】:
int year = 2009;
int month = 1;
int day = 1;
int dayOfYear= 135;
DateTime myDate = new DateTime(year, month, day);
myDate.AddDays(dayOfYear - 1);
【讨论】:
怎么样:
new DateTime(ordinal / 1000, 1, 1).AddDays((ordinal % 1000) - 1);
这取决于 2009 年的第 1 天被表示为 2009001 而不是 20091。如果是后者,那就有点棘手了(当然,虽然还不是很困难)。
不过,我会尝试很快地摆脱这种格式 - 它并不完全是一种常见的格式,而且完全不可读。假设“2009001”格式至少排序合理,但我想不出其他有利于它的东西。
【讨论】:
嗯,我不确定是否有更直接的方法,但这应该可行
new DateTime(year, 1, 1).AddDays(day - 1);
【讨论】: