欢迎访问宙启技术站
智能推送

PHP的strtotime函数:将字符串转换为时间戳

发布时间:2023-06-16 16:26:28

在PHP编程中,时间戳(timestamp)经常被使用。时间戳是指从1970年1月1日00:00:00(格林威治标准时间)起的秒数。通过时间戳,我们可以在程序中方便地对时间进行比较、计算等操作。

但是,有些时候我们需要将字符串转换为时间戳,以便更方便地进行时间相关的操作。这时候,PHP的strtotime函数就可以派上用场了。

PHP的strtotime函数用于将一个字符串转换为时间戳。这个字符串可以是任何合法的日期和时间格式,如“2018-01-01”、“2018/01/01”、“1 January 2018”等等。函数的基本语法如下:

strtotime($timeStr, $now = null)

其中,$timeStr为要转换的字符串,$now为可选参数,表示当前时间。如果不指定$now,则默认为time()函数返回的时间戳(即当前时间)。

接下来,我们通过一些示例来演示如何使用strtotime函数将字符串转换为时间戳。

1. 将一个日期字符串转换为时间戳

假设有一个日期字符串“2018-01-01”,我们可以像下面这样将它转换为时间戳:

echo strtotime('2018-01-01');
// 输出:1514764800

可以看到,strtotime函数返回的是一个整数,它表示从1970年1月1日00:00:00(格林威治标准时间)起的秒数。

2. 将一个日期时间字符串转换为时间戳

如果要将一个日期时间字符串转换为时间戳,可以按下面这样做:

echo strtotime('2018-01-01 12:30:00');
// 输出:1514820600

注意,在日期和时间之间要用空格分隔开。

3. 将一个相对时间字符串转换为时间戳

除了可以直接指定日期字符串来转换为时间戳外,strtotime函数还支持一些相对时间字符串。例如,“+1 day”表示当前时间的后一天,“-1 week”表示当前时间的前一周,以此类推。下面是一些示例:

echo strtotime('+1 day');
// 输出当前时间的后一天的时间戳

echo strtotime('-1 week');
// 输出当前时间的前一周的时间戳

echo strtotime('next year');
// 输出明年的时间戳

echo strtotime('last thursday');
// 输出上周四的时间戳

4. 将一个格式化日期字符串转换为时间戳

有时候,我们需要将一个格式化后的日期字符串(如“01-Jan-2018”)转换为时间戳。这时候,可以使用date_parse_from_format函数先将字符串解析成数组,再使用mktime函数将时间转换为时间戳。具体实现如下:

$dateStr = '01-Jan-2018';
$dateArr = date_parse_from_format('d-M-Y', $dateStr);
$timeStamp = mktime($dateArr['hour'], $dateArr['minute'], $dateArr['second'], $dateArr['month'], $dateArr['day'], $dateArr['year']);
echo $timeStamp;

输出结果为1514793600,与将“2018-01-01”转换为时间戳的结果相同。注意,date_parse_from_format函数用于将一个按照指定格式的日期字符串解析成数组,其中包括年、月、日、时、分、秒等信息。

总之,通过使用strtotime函数,我们可以方便地将各种格式的日期字符串转换为时间戳,便于进行更加灵活和丰富的时间相关操作。