3 回答

TA貢獻(xiàn)1834條經(jīng)驗(yàn) 獲得超8個(gè)贊
在最新版本的.NET(V4.6)的用于Unix時(shí)間轉(zhuǎn)換只是增加了內(nèi)置支持。這包括來(lái)自Unix時(shí)間和來(lái)自Unix或毫秒的時(shí)間。
Unix時(shí)間以秒為單位
DateTimeOffset
:
DateTimeOffset dateTimeOffset = DateTimeOffset.FromUnixTimeSeconds(1000);
DateTimeOffset
以秒為單位的Unix時(shí)間:
long unixTimeStampInSeconds = dateTimeOffset.ToUnixTimeSeconds();
Unix時(shí)間(以毫秒為單位)
DateTimeOffset
:
DateTimeOffset dateTimeOffset = DateTimeOffset.FromUnixTimeMilliseconds(1000000);
DateTimeOffset
以毫秒為單位的Unix時(shí)間:
long unixTimeStampInMilliseconds= dateTimeOffset.ToUnixTimeMilliseconds();
注意:這些方法可以轉(zhuǎn)換為DateTimeOffset
。要獲得DateTime
表示,只需使用該DateTimeOffset.DateTime
屬性:
DateTime dateTime = dateTimeOffset.UtcDateTime;

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超10個(gè)贊
由于歸功于LukeH,我將一些擴(kuò)展方法放在一起以方便使用:
public static DateTime FromUnixTime(this long unixTime){ var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); return epoch.AddSeconds(unixTime);}public static long ToUnixTime(this DateTime date){ var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); return Convert.ToInt64((date - epoch).TotalSeconds);}
注意下面從CodesInChaos注釋?zhuān)厦?code>FromUnixTime返回DateTime
了Kind
的Utc
,這是很好的,但上面ToUnixTime
更加犯罪嫌疑人不占什么樣的DateTime
給定date
的。要允許date
的Kind
是無(wú)論是Utc
或Local
,使用ToUniversalTime
:
public static long ToUnixTime(this DateTime date){ var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); return Convert.ToInt64((date.ToUniversalTime() - epoch).TotalSeconds);}
ToUniversalTime
將a Local
(或Unspecified
)轉(zhuǎn)換DateTime
為Utc
。
如果你不想在從DateTime移動(dòng)到epoch時(shí)創(chuàng)建epoch DateTime實(shí)例,你也可以這樣做:
public static long ToUnixTime(this DateTime date){ return (date.ToUniversalTime().Ticks - 621355968000000000) / 10000000;}
- 3 回答
- 0 關(guān)注
- 537 瀏覽
添加回答
舉報(bào)