时间戳:一般指 Unix 时间戳,秒级:从
1970‑01‑01 00:00:00 UTC到现在的秒数;毫秒级 乘以 1000(JS 常用)。 注意:时间戳本身是 UTC,格式化输出会受时区影响。
Java(SpringBoot / Java17)
1. 时间戳 → 日期字符串
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
public class TimeDemo {
public static void main(String[] args) {
// 秒级时间戳
long tsSecond = 1757289600L;
// 毫秒级时间戳
long tsMilli = 1757289600000L;
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy‑MM‑dd HH:mm:ss");
// 秒戳转本地时间字符串
LocalDateTime dt1 = LocalDateTime.ofInstant(Instant.ofEpochSecond(tsSecond), ZoneId.systemDefault());
System.out.println(dt1.format(fmt));
// 毫秒戳
LocalDateTime dt2 = LocalDateTime.ofInstant(Instant.ofEpochMilli(tsMilli), ZoneId.systemDefault());
System.out.println(dt2.format(fmt));
}
}
2. 日期字符串 → 时间戳
// 字符串解析为时间,再拿时间戳
String timeStr = "2025‑09‑08 12:30:00";
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy‑MM‑dd HH:mm:ss");
LocalDateTime localDateTime = LocalDateTime.parse(timeStr, fmt);
// 转成Instant获取时间戳
long secondTs = localDateTime.atZone(ZoneId.systemDefault()).toEpochSecond();
long milliTs = localDateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
System.out.println("秒戳:" + secondTs);
System.out.println("毫秒戳:" + milliTs);
旧版
SimpleDateFormat线程不安全,新项目一律用java.time。
Python
import time
from datetime import datetime
# ========== 时间戳 → 时间字符串 ==========
ts_sec = 1757289600
# 本地时区格式化
dt = datetime.fromtimestamp(ts_sec)
s = dt.strftime("%Y‑%m‑%d %H:%M:%S")
print(s)
# UTC时间
dt_utc = datetime.utcfromtimestamp(ts_sec)
print(dt_utc.strftime("%Y‑%m‑%d %H:%M:%S"))
# ========== 时间字符串 → 时间戳 ==========
time_str = "2025‑09‑08 12:30:00"
dt2 = datetime.strptime(time_str, "%Y‑%m‑%d %H:%M:%S")
ts = dt2.timestamp() # 返回浮点数秒
print(int(ts)) # 秒戳
print(int(ts*1000)) # 毫秒戳
JavaScript(前端 / NodeJS)
JS Date 构造传入毫秒时间戳
// 时间戳(毫秒) → 时间字符串
const tsMs = 1757289600000;
const d = new Date(tsMs);
console.log(d.toLocaleString()); // 本地时间
console.log(d.toISOString()); // UTC ISO格式 2025‑09‑08T00:00:00.000Z
// 时间字符串 → 毫秒时间戳
const str = "2025‑09‑08 12:30:00";
const timestampMs = new Date(str).getTime();
console.log(timestampMs);
console.log(Math.floor(timestampMs / 1000)); // 转秒戳
MySQL
-- 时间戳(秒) → 日期时间
SELECT FROM_UNIXTIME(1757289600);
-- 日期时间 → 时间戳(秒)
SELECT UNIX_TIMESTAMP('2025‑09‑08 00:00:00');
常见坑点
秒 vs 毫秒:Java/Python 默认秒;JS 只认毫秒,经常差 1000 倍,时间变成远古 / 未来。
时区:时间戳永远 UTC;格式化展示受服务器 / 操作系统时区,同一戳不同时区输出不同日期。
格式 pattern 大小写:
yyyy年MM月dd日HH24 小时;hh12 小时;mm分钟;ss秒。
本文原创作者:易君召,详见:https://www.yijunzhao.cc/about,转载请注明出处。
原文链接
欢迎访问