天天看點

c#DateTime與unix時間戳互相轉換

因為七牛的私庫下載下傳路徑中的逾時時間需要用到Unix時間戳,特此記錄一下

Unix時間戳( Unix timestamp):從1970年1月1日(UTC/GMT的午夜)開始所經過的秒數,不考慮閏秒

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

<code>public</code> <code>class</code> <code>UnixTimeUtil</code>

<code>{</code>

<code>    </code><code>/// &lt;summary&gt;</code>

<code>    </code><code>/// 将dateTime格式轉換為Unix時間戳</code>

<code>    </code><code>/// &lt;/summary&gt;</code>

<code>    </code><code>/// &lt;param name="dateTime"&gt;&lt;/param&gt;</code>

<code>    </code><code>/// &lt;returns&gt;&lt;/returns&gt;</code>

<code>    </code><code>public</code> <code>static</code> <code>int</code> <code>DateTimeToUnixTime(DateTime dateTime)</code>

<code>    </code><code>{</code>

<code>        </code><code>return</code> <code>(</code><code>int</code><code>)(dateTime - TimeZone.CurrentTimeZone.ToLocalTime(</code><code>new</code> <code>DateTime(1970, 1, 1))).TotalSeconds;</code>

<code>    </code><code>}</code>

<code>    </code><code>/// 将Unix時間戳轉換為dateTime格式</code>

<code>    </code><code>/// &lt;param name="time"&gt;&lt;/param&gt;</code>

<code>    </code><code>public</code> <code>static</code> <code>DateTime UnixTimeToDateTime(</code><code>int</code> <code>time)</code>

<code>        </code><code>if</code> <code>(time &lt; 0)</code>

<code>            </code><code>throw</code> <code>new</code> <code>ArgumentOutOfRangeException(</code><code>"time is out of range"</code><code>);</code>

<code>        </code><code>return</code> <code>TimeZone.CurrentTimeZone.ToLocalTime(</code><code>new</code> <code>DateTime(1970, 1, 1)).AddSeconds(time);</code>

<code>}</code>

  

還可以這樣子求Unix時間戳:

(DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000

c