PHP strtotime()与mktime():日期转时间戳
前面我们介绍了《time() 函数》可以获取当前的时间戳,那么如果想要将一个具体的时间转换成时间戳的话该怎么办呢?
PHP 中提供了两个函数可以实现将具体的日期转换为时间戳,分别是 strtotime() 函数和 mktime() 函数。下面我们来分别介绍一下。
另外需要注意的是,如果使用两位数字表示年份的话,其中 0 ~ 69 表示 2000 ~ 2069,70 ~ 100 则表示 1970 ~ 2000。
【示例】使用 strtotime() 函数获取指定时间的时间戳。
PHP 中提供了两个函数可以实现将具体的日期转换为时间戳,分别是 strtotime() 函数和 mktime() 函数。下面我们来分别介绍一下。
1、strtotime() 函数
使用 strtotime() 函数可以将任何字符串类型的日期/时间转换为 UNIX 时间戳,其语法格式如下:strtotime($time [,$now = time()])
其中 $time 为表示时间/日期的字符串,例如“2020-01-01”;$now 为可选参数,用来计算返回值的时间戳。函数执行成功会返回指定的字符串,执行失败返回 FALSE。另外需要注意的是,如果使用两位数字表示年份的话,其中 0 ~ 69 表示 2000 ~ 2069,70 ~ 100 则表示 1970 ~ 2000。
【示例】使用 strtotime() 函数获取指定时间的时间戳。
<?php echo '当前的时间戳是:'.time().'<br>'; echo '使用“now”获取当前的时间戳:'.strtotime('now').'<br>'; echo '2000-09-10 的时间戳是:'.strtotime("10 September 2000").'<br>'; echo '在当前的时间戳上加一天:'.strtotime("+1 day").'<br>'; echo '在当前的时间戳上加一周:'.strtotime("+1 week").'<br>'; echo '在当前的时间戳上加一周两天四小时两分钟:'.strtotime("+1 week 2 days 4 hours 2 seconds").'<br>'; echo '下一个周四的时间戳:'.strtotime("next Thursday").'<br>'; echo '上一个周一的时间戳:'.strtotime("last Monday").'<br>'; ?>运行结果如下:
当前的时间戳是:1585273874
使用“now”获取当前的时间戳:1585273874
2000-09-10 的时间戳是:968515200
在当前的时间戳上加一天:1585360274
在当前的时间戳上加一周:1585878674
在当前的时间戳上加一周两天四小时两分钟:1586065876
下一个周四的时间戳:1585756800
上一个周一的时间戳:1584892800
注意:根据具体时间的变化,程序每次运行的结果略有不同。
2、mktime() 函数
除了 strtotime() 函数外,我们还可以使用 PHP 中的 mktime() 函数来获取指定日期的 UNIX 时间戳,该函数的语法格式如下:mktime ([$hour = date("H") [, $minute = date("i") [, $second = date("s") [, $month = date("n") [, $day = date("j") [, $year = date("Y") [, $is_dst = -1 ]]]]]]])
参数说明如下:- $hour:表示一天中经过的小时数。如果 $hour 为负值,则表示前一天的适当时间;如果 $hour 大于 23,则表示第二天的适当时间。
- $minute:表示一个小时内经过的分钟数。如果 $minute 为负值,则表示前一小时适当的分钟数;如果 $minute 大于 59,则表示下一小时中的适当分钟数。
- $second:表示一分钟内经过的秒数。如果 $second 为负值,则表示前一分钟内的适当秒数;如果 $second 大于59,则表示下一分钟内的适当秒数。
- $month:表示一年中经过的月份数,取值范围在 1 到 12 之间。如果 $month 小于 1(包括负值),则表示上一年的适当月份;如果 $month 大于 12,则表示下一年的适当月份。
- $day:表示一个月中经过的天数,取值范围在 1 到 31 之间(取决于具体月份的天数)。如果 $day 小于 1(包括负值),则表示上个月的适当天数,比如 0 表示上个月的最后一天,-1 表示上个月的倒数第二天等等;如果 $day 大于本月的最大天数,则表示下个月的适当日期。
- $year:表示具体的年份,可以是两位或四位数字,0 ~ 69 对应 2000 ~ 2069 年,70 ~ 100 对应 1970 ~ 2000年。在如今系统中普遍把 time_t 作为一个 32 位有符号整数的情况下,$year 的合法范围是 1901 到 2038 之间,不过此限制自 PHP5.1.0 起已被克服了。
- $is_dst:本参数可以设为 1,表示正处于夏时制时间(DST),0 表示不是夏时制,或者 -1(默认值)表示不知道是否是夏时制。不过本参数在 PHP5.1.0 中已被废弃,并在 PHP7.0.0 中移除。
提示:mktime() 函数中的参数可以从右向左省略,任何省略的参数会被设置成本地日期和时间的当前值。如果省略函数的所有参数,那么 mktime() 函数会和 time() 函数一样,返回当前的时间戳。
【示例】使用 mktime() 函数获取指定时间的时间戳。<?php $time1 = time(); echo '当前的时间戳是:'.$time1.'<br>'; $time2 = mktime(0, 0, 0, 3, 26, 20); echo '2020-03-26 00:00:00 的时间戳是:'.$time2.'<br>'; $time3 = mktime(); echo '省略函数的所有参数,获得的时间戳是:'.$time3.'<br>'; $time4 = mktime(-1, -20, 6, 3, 26, 2020); echo '2020-03-25 22:40:06 的时间戳是:'.$time4.'<br>'; ?>运行结果如下:
当前的时间戳是:1585216256
2020-03-26 00:00:00 的时间戳是:1585152000
省略函数的所有参数,获得的时间戳是:1585216256
2020-03-25 22:40:06 的时间戳是:1585147206
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算