DateTimeOffset 在 C# 4.6 新增了 ToUnixTimeSeconds 方法,可以取得跟 UnixTime 之間差的秒數。
有些時候我們會需要跟 UnixTime 之間差的秒數,但是不需要 TimeZone 資訊,這時我們其實不需要從 DateTime 換成 DateTimeOffset,只要自行跟 UnixTime 相減再取 TotalSeconds 即可。
為了便於使用,這邊將它包成擴充方法。
1 | using System; |
使用上會像下面這樣:
1 | var unitTimeSeconds = DateTime.UtcNow.ToUnixTimeSeconds(); |
這邊筆者撰寫了個簡單的程式做個測試。
1 | using System; |
透過運行的結果可以看到值跟 DateTimeOffset 內建的 ToUnixTimeSeconds 是一致的,但速度上會比 DateTimeOffset 內建的 ToUnixTimeSeconds 還要快一點點,這部分應該是因為 DateTimeOffset 要多處理 TimeZone 的原因。

最後附上測出來的速度比較數據。
Times | DateTime | DateTimeOffset |
---|---|---|
100000 | 6 | 7 |
1000000 | 61 | 73 |
10000000 | 597 | 713 |
100000000 | 5919 | 7067 |
1000000000 | 59118 | 70631 |
