我不知道爲什麼這太複雜了!C#將UTC int轉換爲DateTime對象
我有一個傳遞一個長整型UTC的插件。我需要將該號碼轉換爲DateTime
來查詢我的數據庫(SQL Server)。
我不知道爲什麼,但我無法從基本的谷歌搜索中找到可行的答案。
(對於額外的信用,我需要把我的返回DateTime
回在一天結束時UTC)
這是尷尬不得不問這樣一個基本的問題! :)
我不知道爲什麼這太複雜了!C#將UTC int轉換爲DateTime對象
我有一個傳遞一個長整型UTC的插件。我需要將該號碼轉換爲DateTime
來查詢我的數據庫(SQL Server)。
我不知道爲什麼,但我無法從基本的谷歌搜索中找到可行的答案。
(對於額外的信用,我需要把我的返回DateTime
回在一天結束時UTC)
這是尷尬不得不問這樣一個基本的問題! :)
我的猜測是,這將是自特定時期無論是毫秒或秒 - 很可能是1970年1月1日,午夜(UTC)的Unix紀元。
因此,代碼會看起來像:
private static readonly DateTime UnixEpoch = new DateTime(1970, 1, 1, 0, 0, 0,
DateTimeKind.Utc);
public static DateTime FromMillisecondsSinceUnixEpoch(long milliseconds)
{
return UnixEpoch.AddMilliseconds(milliseconds);
}
作出秒鐘明顯的變化,或從不同的時代:)
的另一種方法是創建秒/毫秒的TimeSpan
自紀元,然後將其添加到紀元:
private static readonly DateTime UnixEpoch = new DateTime(1970, 1, 1, 0, 0, 0,
DateTimeKind.Utc);
public static DateTime FromMillisecondsSinceUnixEpoch(long milliseconds)
{
return UnixEpoch + TimeSpan.FromMilliseconds(milliseconds);
}
我不知道他們之間有任何顯着差異 - 儘管事實上AddMilliseconds
需要double
而不是long
表明對於非常大的值,TimeSpan
方法可能更可取。我懷疑它會做出任何區別,雖然:)
謝謝!這正是我需要的。 –
int是你得到秒,毫秒,或什麼?將其轉換爲滴答後,(一個.NET滴答是100納秒),例如通過long ticks = theDBDateNum*TimeSpan.TicksPerMillisecond;
,試試這個:
DateTime theDate = new DateTime(ticks, DateTimeKind.Utc);
這是假設一個與.NET相同的時代 - 這在我的經驗中似乎不太可能。 –
是的。從時代開始秒數就過去了。 –
by * UTC int *,你的意思是自從時代以來的秒鐘? – bzlm