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

如何使用PHP函数strtotime将日期和时间字符串转换为UNIX时间戳?

发布时间:2023-06-25 01:20:08

UNIX时间戳是指从1970年1月1日00:00:00到当前时间的总秒数。在PHP中,可以使用strtotime函数将日期和时间字符串转换为UNIX时间戳。该函数将日期和时间字符串转换为UNIX时间戳格式,并返回UNIX时间戳的值。

strtotime函数是PHP中非常有用的日期和时间函数。它可以将人类可读的日期和时间格式转换为机器可读的UNIX时间戳格式。strtotime函数通常用于从数据库中检索数据,或根据用户的输入生成日期和时间。

在此处,我们将了解如何使用strtotime函数将日期和时间字符串转换为UNIX时间戳。我们将使用以下的示例:

$date_string = '2021-10-20 13:15:20';
$time_string = '2:20PM';

$date_timestamp = strtotime($date_string);
$time_timestamp = strtotime($time_string);

echo '日期字符串:' . $date_string . '<br>';
echo '时间字符串:' . $time_string . '<br>';
echo '日期时间戳:' . $date_timestamp . '<br>';
echo '时间时间戳:' . $time_timestamp . '<br>';

在这个例子中,我们有两个字符串:一个日期字符串和一个时间字符串。我们使用strtotime函数将它们分别转换为UNIX时间戳。然后我们输出转换后的日期时间戳和时间时间戳。

输出:

日期字符串:2021-10-20 13:15:20
时间字符串:2:20PM
日期时间戳:1634723720
时间时间戳:1634734800

从输出结果中可以看出,strtotime函数将日期和时间字符串转换为UNIX时间戳成功。现在让我们更详细地了解strtotime函数。

### strtotime函数概述

strtotime函数是PHP中的日期和时间函数之一。该函数将日期和时间字符串转换为UNIX时间戳格式,并返回UNIX时间戳的值。该函数的一般形式如下:

strtotime ( string $time [, int $now = time() ] )

该函数有两个参数:

- time:待转换的日期和时间字符串。

- now:可选参数,表示UNIX时间戳的起始时间,默认值为当前时间。

该函数返回一个整数值,代表UNIX时间戳。

### strtotime函数参数

strtotime函数有两个参数。下面详细介绍一下这两个参数。

#### time参数

time参数是待转换的日期和时间字符串。该参数支持多种不同的格式:

- yyyy-mm-dd:年月日格式。

- yyyy/mm/dd:年月日格式。

- y-m-d:短格式年月日。

- y/m/d:短格式年月日。

- d-m-y:短格式日月年。

- d/m/y:短格式日月年。

- H:i:s:小时:分钟:秒钟。

- h:i:s A:小时:分钟:秒钟 AM/PM。

- h:i:s a:小时:分钟:秒钟 am/pm。

- yyyymmdd:紧凑格式年月日。

- yyyymmddHHMMSS:紧凑格式年月日小时分钟秒钟。

- timestamp:从1970年1月1日起的总秒数。

在解析字符串时,strtotime函数会尽可能多地尝试使用指定的格式。如果找不到符合指定格式的字符串,strtotime函数将返回false。

#### now参数

now参数是可选参数,默认值为当前时间。该参数是一个UNIX时间戳,并用于解析相对时间字符串(如‘+1 day’或‘-1 week’)。

### strtotime函数示例

下面是一些strtotime函数的实际示例。

#### 示例1:使用常见日期和时间字符串

在这个示例中,我们使用一个常见的日期和时间字符串来演示strtotime函数的使用。

//使用常见日期和时间字符串
$date_string = '2021-10-20 13:15:20';
$time_string = '2:20PM';

//将字符串转换为UNIX时间戳
$date_timestamp = strtotime($date_string);
$time_timestamp = strtotime($time_string);

//输出UNIX时间戳
echo '日期字符串:' . $date_string . '<br>';
echo '时间字符串:' . $time_string . '<br>';
echo '日期时间戳:' . $date_timestamp . '<br>';
echo '时间时间戳:' . $time_timestamp . '<br>';

输出:

日期字符串:2021-10-20 13:15:20
时间字符串:2:20PM
日期时间戳:1634723720
时间时间戳:1634734800

在这个示例中,我们将一个常见的日期和时间字符串转换为UNIX时间戳。首先,我们定义了日期和时间字符串。然后,我们使用strtotime函数将它们分别转换为UNIX时间戳。最后,我们输出转换后的日期时间戳和时间时间戳。

#### 示例2:使用相对时间字符串

下面的示例演示如何使用strtotime函数从当前时间开始解析相对时间字符串。在这个示例中,我们从当前时间开始,加上10天。

//使用相对时间字符串
$relative_string = '+10 day';

//解析相对于当前时间的UNIX时间戳
$relative_timestamp = strtotime($relative_string);

//格式化UNIX时间戳
$relative_date = date('Y-m-d H:i:s', $relative_timestamp);

//输出
echo '相对时间字符串:' . $relative_string . '<br>';
echo '相对时间戳:' . $relative_timestamp . '<br>';
echo '相对日期:' . $relative_date . '<br>';

输出:

相对时间字符串:+10 day
相对时间戳:1636203944
相对日期:2021-11-06 10:52:24

在这个示例中,我们从当前时间开始,加上10天。首先,我们定义了一个相对时间字符串。然后,我们使用strtotime函数从当前时间开始解析它。next step,We then format the resulting timestamp as a human-readable date, and print the results.

#### 示例3:使用日期时间字符串和时区

时区是一个非常重要的因素,因为它对日期和时间的处理方式至关重要。下面的示例演示使用strtotime函数将日期和时间字符串转换为UNIX时间戳,并将时区设置为UTC。

//使用日期时间字符串和时区
$date_string = '2021-10-20 13:15:20';
$timezone = new DateTimeZone('UTC');

//将字符串转换为UNIX时间戳
$date_timestamp = strtotime($date_string . ' UTC');

//输出日期时间戳
echo '日期字符串:' . $date_string . '<br>';
echo '日期时间戳:' . $date_timestamp . '<br>';

输出:

日期字符串:2021-10-20 13:15:20
日期时间戳:1634723720

在这个示例中,我们将日期和时间字符串转换为UNIX时间戳,并将时区设置为UTC。首先,我们定义日期时间字符串和一个时区。然后,我们使用strtotime函数将日期时间字符串转换为UNIX时间戳,并通过“UTC”字符串指定时区。

### 总结

在PHP中,strtotime函数是将日期和时间字符串转换为UNIX时间戳的常用函数之一。使用该函数可以将多种不同格式的日期和时间字符串转换为机器可读的UNIX时间戳格式。正确处理时区是将日期和时间字符串正确转换为UNIX时间戳的关键因素之一。通常,需要将字符串转换为UNIX时间戳,然后根据需要格式化输出。