微时钟极简时间工具

各编程语言获取当前时间戳的方法

微时钟 · 2026-07-22 · 约 3 分钟读完

Unix 时间戳是从 1970 年 1 月 1 日 UTC 起经过的秒数,不受时区影响。不同语言获取时间戳的 API 各不相同,有的默认返回秒(10 位),有的默认返回毫秒(13 位)。本文汇总七种常用语言的写法,秒级和毫秒级都给出,代码可直接运行。如果只想快速查看当前时间戳数值,也可以直接使用时间戳转换工具

JavaScript

JavaScript 的 Date 对象以毫秒为基准,获取秒级时间戳需要除以 1000 再取整。

// 毫秒时间戳(13 位)
const ms = Date.now();

// 秒级时间戳(10 位)
const sec = Math.floor(Date.now() / 1000);

console.log(ms, sec);

Python

time.time() 返回带小数的秒浮点数,取整得到秒级,乘 1000 得到毫秒级。

import time

# 秒级时间戳(10 位)
sec = int(time.time())

# 毫秒时间戳(13 位)
ms = int(time.time() * 1000)

print(sec, ms)

Java

System.currentTimeMillis() 是最常用的毫秒时间戳方法;Java 8 之后也可以用 Instant。

// 毫秒时间戳(13 位)
long ms = System.currentTimeMillis();

// 秒级时间戳(10 位)
long sec = ms / 1000;
// 或者:long sec = Instant.now().getEpochSecond();

System.out.println(sec + " " + ms);

Go

标准库 time 包提供了秒和毫秒的现成方法。

package main

import (
	"fmt"
	"time"
)

func main() {
	sec := time.Now().Unix()      // 秒级(10 位)
	ms := time.Now().UnixMilli()  // 毫秒级(13 位,Go 1.17+)
	fmt.Println(sec, ms)
}

PHP

time() 直接返回秒级时间戳;毫秒需要用 microtime(true) 计算。

<?php
// 秒级时间戳(10 位)
$sec = time();

// 毫秒时间戳(13 位)
$ms = (int)(microtime(true) * 1000);

echo $sec . " " . $ms;
?>

C#

.NET 的 DateTimeOffset 提供了秒和毫秒两个属性,注意要用 UtcNow 而不是 Now。

// 秒级时间戳(10 位)
long sec = DateTimeOffset.UtcNow.ToUnixTimeSeconds();

// 毫秒时间戳(13 位)
long ms = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();

Console.WriteLine($"{sec} {ms}");

Shell(Linux / macOS)

date 命令的 +%s 格式输出秒级时间戳;毫秒可用 +%s%3N(macOS 自带 date 不支持 %N,可用 Python 兜底)。

# 秒级时间戳(10 位)
date +%s

# 毫秒时间戳(13 位,Linux)
date +%s%3N

# 毫秒时间戳(macOS 兼容写法)
python3 -c 'import time; print(int(time.time()*1000))'

为什么代码里更推荐存时间戳

相比「2026-07-22 22:20:00」这样的日期字符串,时间戳是一个纯整数,有三个明显优势:

需要注意的是,如果你的系统还在用 32 位整数存时间戳,它将在 2038 年溢出,这个问题详见《2038 年问题:Unix 时间戳的千年虫》一文,新系统应统一使用 64 位整数。

注意事项

拿到时间戳后想验证它对应的具体日期时间,可以用时间戳转换工具一键换算。