语言日期函数
C、Python、JavaScript、Java、Go、PHP、SQL 等语言的日期时间 API 与格式符速查。
C 标准库
<time.h>
通过
time()
获取秒级时间戳,
localtime()
/
gmtime()
转为
struct tm
,再用
strftime()
格式化。
time_t now = time(NULL);
struct tm *lt = localtime(&now);
char buf[64];
strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", lt);
| 格式符 | 说明 | 示例 |
|---|---|---|
%Y
|
四位年份 | 2026 |
%m
|
月份 01–12 | 05 |
%d
|
日 01–31 | 23 |
%H
|
24 小时 | 16 |
%M
|
分钟 | 03 |
%S
|
秒 | 00 |
%A
|
完整星期 | Saturday |
%z
|
UTC 偏移 | +0800 |
C++11 起可用
<chrono>
与
std::put_time
,格式符与 strftime 相同。
Python
datetime
datetime.now()
获取当前时间;
strftime()
格式化,
strptime()
解析字符串。
from datetime import datetime, timezone
now = datetime.now()
now.strftime("%Y-%m-%d %H:%M:%S")
datetime.strptime("2026-05-23", "%Y-%m-%d")
datetime.now(timezone.utc).isoformat()
| 格式码 | 说明 | 示例 |
|---|---|---|
%Y
|
四位年份 | 2026 |
%m
|
月份 | 05 |
%d
|
日 | 23 |
%H
|
24 小时 | 16 |
%f
|
微秒(Python 特有) | 123456 |
%z
|
UTC 偏移 | +0800 |
推荐时区处理使用
zoneinfo
(3.9+)或第三方
pytz
。
JavaScript
Date
/
Intl
内置
Date
表示时刻;本地化输出优先用
Intl.DateTimeFormat
,时区用
timeZone
选项。
const now = new Date();
now.toISOString(); // UTC ISO 8601
now.toLocaleString("zh-CN");
new Intl.DateTimeFormat("zh-CN", {
timeZone: "Asia/Shanghai",
dateStyle: "full",
timeStyle: "medium",
}).format(now);
Math.floor(now.getTime() / 1000); // Unix 秒
| 方法 / API | 说明 |
|---|---|
Date.now()
|
毫秒时间戳 |
getFullYear()
等
|
本地时区字段读取 |
toISOString()
|
UTC ISO 格式 |
Intl.DateTimeFormat
|
按 locale / timeZone 格式化 |
Temporal
(Stage 3)
|
新一代日期 API,语义更清晰 |
Java
java.time
(Java 8+)
推荐使用
Instant
、
ZonedDateTime
、
DateTimeFormatter
,避免旧版
Date
/
Calendar
。
import java.time.*;
import java.time.format.DateTimeFormatter;
ZonedDateTime zdt = ZonedDateTime.now(ZoneId.of("Asia/Shanghai"));
zdt.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
Instant.now().getEpochSecond();
LocalDate.parse("2026-05-23");
| 模式字母 | 说明 | 示例 |
|---|---|---|
yyyy
|
四位年份 | 2026 |
MM
|
月份 | 05 |
dd
|
日 | 23 |
HH
|
24 小时 | 16 |
mm
|
分钟 | 03 |
ss
|
秒 | 00 |
XXX
|
时区偏移 | +08:00 |
Go
time
包
time.Now()
返回带单调时钟的
Time
;
Format
/
Parse
使用参考时间
Mon Jan 2 15:04:05 MST 2006
。
import "time"
now := time.Now()
now.Format("2006-01-02 15:04:05")
time.Parse("2006-01-02", "2026-05-23")
now.Unix()
time.LoadLocation("Asia/Shanghai")
| 布局片段 | 含义 | 示例值 |
|---|---|---|
2006
|
年份 | 2026 |
01
|
月份 | 05 |
02
|
日 | 23 |
15
|
24 小时 | 16 |
04
|
分钟 | 03 |
05
|
秒 | 00 |
MST
|
时区名 | CST |
PHP 日期函数
date()
格式化当前时间;
DateTime
/
DateTimeImmutable
面向对象用法更灵活。
date("Y-m-d H:i:s");
$dt = new DateTime("now", new DateTimeZone("Asia/Shanghai"));
$dt->format("Y-m-d H:i:s");
DateTime::createFromFormat("Y-m-d", "2026-05-23");
time(); // Unix 秒
| 格式符 | 说明 | 示例 |
|---|---|---|
Y
|
四位年份 | 2026 |
m
|
月份 | 05 |
d
|
日 | 23 |
H
|
24 小时 | 16 |
i
|
分钟 | 03 |
s
|
秒 | 00 |
e
|
时区标识 | Asia/Shanghai |
SQL 日期函数
各数据库语法略有差异,以下为 MySQL / MariaDB 常用写法;PostgreSQL 可用
TO_CHAR
,SQLite 用
strftime
。
-- MySQL
SELECT NOW();
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s');
SELECT UNIX_TIMESTAMP(NOW());
-- PostgreSQL
SELECT TO_CHAR(NOW(), 'YYYY-MM-DD HH24:MI:SS');
-- SQLite
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now', 'localtime');
| 函数 | 说明 |
|---|---|
NOW() / CURRENT_TIMESTAMP
|
当前日期时间 |
DATE_FORMAT
(MySQL)
|
格式化输出 |
TO_CHAR
(PostgreSQL)
|
格式化输出 |
strftime
(SQLite)
|
格式化,语法类似 C |
DATEDIFF / DATE_PART
|
日期差值 / 提取字段 |