登录
首页 >  文章 >  php教程

PHP中mktime()函数用于将日期时间转换为Unix时间戳。

时间:2026-03-27 23:13:53 138浏览 收藏

mktime() 是 PHP 中一个曾广泛用于将可读日期时间(如“2025年4月5日15:20”)智能转换为 Unix 时间戳的实用函数,支持参数默认填充和“溢出校正”(如输入13月自动进位到下一年1月),极大简化了时间计算;但需注意它依赖服务器本地时区,且自 PHP 8.1 起已被正式废弃——如果你正在维护旧代码,理解它很有必要;而开发新项目时,则强烈建议转向更现代、面向对象且时区友好的 DateTime 类或 strtotime(),以确保代码的可持续性与健壮性。

php中mktime()函数是什么

mktime() 是 PHP 中用于根据指定的日期时间组件(年、月、日、时、分、秒)生成 Unix 时间戳的内置函数。

作用:把日期时间转成时间戳

它把人为可读的日期时间(比如“2025年4月5日下午3点20分”)转换成一个整数——即从 1970 年 1 月 1 日 00:00:00 UTC 开始经过的秒数(Unix 时间戳)。这个整数便于计算、比较和存储。

基本语法:

int mktime ([ int $hour = date("H") [, int $minute = date("i") [, int $second = date("s") [, int $month = date("n") [, int $day = date("j") [, int $year = date("Y") ]]]]]] )

参数可以省略,会自动补默认值

所有参数都是可选的。没传的参数会用当前本地时间对应的部分自动填充。例如:

  • mktime(14, 30) —— 表示今天下午 2:30(小时=14,分钟=30,其余用当前值)
  • mktime(0, 0, 0, 12, 25, 2025) —— 表示 2025 年 12 月 25 日 00:00:00

支持“溢出”写法,自动进位/借位

这是 mktime() 很实用的一个特点:允许传入不合法的数值,它会自动校正。比如:

  • mktime(0, 0, 0, 13, 1, 2024) → 自动变成 2025 年 1 月 1 日(13 月 = 下一年 1 月)
  • mktime(0, 0, 0, 1, 32, 2024) → 自动变成 2024 年 2 月 1 日(1 月 32 日 = 2 月 1 日)

注意时区和已废弃状态

mktime() 使用的是服务器本地时区,不是 UTC;结果是带时区偏移的时间戳(但时间戳本身是 UTC 秒数,显示时受时区影响)。

PHP 8.1 起,mktime() 已被标记为 废弃(deprecated),官方推荐改用 DateTime 类或 strtotime() 处理时间逻辑。例如:

$timestamp = (new DateTime('2025-04-05 15:20:00'))->getTimestamp();

基本上就这些。用它快速生成时间戳没问题,但新项目建议优先考虑 DateTime。

今天关于《PHP中mktime()函数用于将日期时间转换为Unix时间戳。》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>