我需要以YYDDD格式将DateTime转换为julian日期。 你怎么做呢? 我已经看到.net中有一个JulianCalendar类,但找不到任何如何进行转换的示例。 我看到很少的链接,但没有一个工作。
有什么建议吗?
UPDATE 我已经获得了一些转换为csv文件的日期,这包括将dateTime转换为我在银行业世界中使用的显然无法更改的格式。格式是YYDDD。经过一些谷歌搜索,它看起来像是朱利安日历。我可能错了。所以我在这里完全混淆了什么格式。
答案 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")
。