如何将DateTime转换为JulianDate?

时间:2011-04-27 14:05:03

标签: c# datetime c#-4.0

我需要以YYDDD格式将DateTime转换为julian日期。 你怎么做呢? 我已经看到.net中有一个JulianCalendar类,但找不到任何如何进行转换的示例。 我看到很少的链接,但没有一个工作。

有什么建议吗?

UPDATE 我已经获得了一些转换为csv文件的日期,这包括将dateTime转换为我在银行业世界中使用的显然无法更改的格式。格式是YYDDD。经过一些谷歌搜索,它看起来像是朱利安日历。我可能错了。所以我在这里完全混淆了什么格式。

2 个答案:

答案 0 :(得分:9)

看起来这种格式在大型机世界中确实称为Julian Date ...

http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=julian+date+yyddd

var myDate = DateTime.Now;
string.Format("{0:yy}{1:D3}", myDate, myDate.DayOfYear);

编辑 - 要将此类字符串转换回日期,可以使用以下内容:

DateTime FromBizarreMainframeFormat(string julianDate) {
    // TODO add validation logic, plus rules to cope with pre-2000 dates
    var yy = 2000 + int.Parse(julianDate.SubString(0,2));
    var ddd = int.Parse(julianDate.Substring(2));
    return new DateTime(yy, 1, 1).AddDays(ddd);
}

答案 1 :(得分:2)

看起来你要求的值等于(myDate.Year % 100) * 1000 + myDate.DayOfYear。这是一个非常简单的计算。

如果你想要一个带前导零的字符串,那么你可以(myDate.Year % 100).ToString("D2") + myDate.DayOfYear.ToString("D3")