2011-12-20 69 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