2011-12-20 70 views
0

嘿,我希望从当前的日期,其中DDD是天数自今年开始建立一个Julian日期格式像YYDDD。ASP.NET从当前日期起儒略日

有任何.NET函数轻松地做到这一点?

+0

可能重复[转换日期时间朱利安日期在C#(ToOADate安全吗?)(http://stackoverflow.com/questions/5248827/convert-datetime-to-julian-date-in-c-sharp-tooadate-safe) – kd7 2011-12-20 19:35:07

回答

2

因为,如果你与朱利安日期工作,你可能需要重新再次做到这一点,我建议写System.DateTime的一个扩展功能,这将执行类似如下:

return (DateTime.Year % 100) * 1000 + DateTime.DayOfYear 

埃塔:如果你想要做的是一个DateTime转换为Julian日期格式(创建Julian日期格式的格式的字符串),我还是建议扩展功能,但它应该是这样的:

public static string ToJulianDate(this DateTime date) 
{ 
    return string.Format("{0:00000}", (date.Year % 100) * 1000 + date.DayOfYear); 
} 
+0

只是想知道我是如何改变今年 – StevieB 2011-12-21 00:02:11

+0

@StevieB啊,因为格式化YYDDD所以过去几天,这样你就不会问如何将日期转换代表Julian日期的数字,而是如何格式化System.DateTime的作为YYDDD(基本上,将其转换为这种格式的字符串?) – 2011-12-21 14:52:08

0

,我能想到的,但也许这将帮助没有的功能:

Public Function Date2Julian(ByVal vDate As Date) As Long 

    Date2Julian = CLng(Format(Year(vDate), "0000") _ 
        + Format(DateDiff("d", CDate("01/01/" _ 
        + Format(Year(vDate), "0000")), vDate) _ 
        + 1, "000")) 

End Function 
0

这里有一对夫妇,可以帮助:

public double GetJulianDate(DateTime pdtmDate) 
{ 
DateTime dtmStart = new DateTime(1,1,1); 
TimeSpan objTS = new TimeSpan(pdtmDate.Ticks - dtmStart.Ticks); 
return objTS.TotalDays + 1721637; 
} 


Public Function Date2Julian(ByVal vDate As Date) As Long 

    Date2Julian = CLng(Format(Year(vDate), "0000") _ 
        + Format(DateDiff("d", CDate("01/01/" _ 
        + Format(Year(vDate), "0000")), vDate) _ 
        + 1, "000")) 

End Function 
+0

耶唯一的问题是我需要它在格式YYDDD所以它只有几天过去了今年 – StevieB 2011-12-21 00:50:22