UNIX 时间戳

时间戳

Unix 时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。


北京时间

夏令时

1986年至1991年,中华人民共和国在全国范围实行了六年夏令时,每年从4月中旬的第一个星期日2时整(北京时间)到9月中旬第一个星期日的凌晨2时整(北京夏令时)。除1986年因是实行夏令时的第一年,从5月4日开始到9月14日结束外,其它年份均按规定的时段施行。夏令时实施期间,将时间向后调快一小时。1992年4月5日后不再实行。


JDK 不同版本的夏令时问题

夏令时的起止,是政令对日历描述的人为干预。每年均可能发生变化,JDK 如何感知这个规律并在系统上加以体现的?穷举所有变化,并配置在 JDK 中。详见:Timezone Data Versions in the JRE Software


不同版本下 Asia/Shanghai 时区夏令时起始时间不同,早期维护者认为中国标准时间的夏令时切换发生在0时,而后来又经证明发生在2时,新版本 JDK 及时修正了这个问题。


获取当前时间戳

Swift   

NSDate().timeIntervalSince1970

Go  

import (

  "time"

)

int64(time.Now().Unix())

Java    

// pure java

System.currentTimeMillis() / 1000

// joda java

DateTime.now().getMillis() / 1000

// java >= 8

Instant.now().getEpochSecond()

JavaScript  

Math.round(new Date() / 1000)

Objective-C 

[[NSDate date] timeIntervalSince1970]

MySQL   

SELECT unix_timestamp(now())

SQLite  

SELECT strftime('%s', 'now')

Erlang  

calendar:datetime_to_gregorian_seconds(calendar:universal_time())-719528*24*3600.

PHP 

<?php

// pure php

time();

<?php

// carbon php

use Carbon\Carbon;

Carbon::now()->timestamp;

Python  

import time

time.time()

import arrow

arrow.utcnow().timestamp

Ruby    

Time.now.to_i

Shell   

date +%s

Groovy  

(new Date().time / 1000).longValue()

Lua 

os.time()

.NET/C# 

DateTimeOffset.UtcNow.ToUnixTimeSeconds();

Dart    

(new DateTime.now().millisecondsSinceEpoch / 1000).truncate()

被以下专题收入,发现更多相似内容
办公
推荐阅读更多精彩内容