时间戳转换
时间戳与日期格式互转
当前时间戳
毫秒
时间戳转日期时间
日期时间转时间戳
简介
时间戳,是从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 及时修正了这个问题。
获取当前时间戳
| 语言 | 代码示例 |
|---|---|
| JavaScript | Date.now() |
| Java | System.currentTimeMillis() |
| Python | int(time.time() * 1000) |
| Go | time.Now().UnixMilli() |
| Swift | NSDate().timeIntervalSince1970 * 1000 |
| C / C++ | (long)(std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count()) |
| PHP | microtime(true) * 1000 |
| Ruby | (Time.now.to_f * 1000).to_i |
| Shell | date +%s%3N |
| MySQL | SELECT UNIX_TIMESTAMP(NOW(3)) * 1000 |
| PostgreSQL | EXTRACT(EPOCH FROM NOW()) * 1000 |