PHP是一种被广泛使用的开源服务器端脚本语言,可以嵌入HTML中使用,提供了强大的数据处理能力,尤其擅长处理字符串和日期。其中,时间戳(timestamp)是常用的日期处理方式之一,它表示一个特定日期和时间的绝对值。在PHP中,我们可以用内置函数 time()
来获取当前时间戳。
一、获取当前时间戳
我们可以使用 time()
函数来获取当前的时间戳,它返回的是距离 UNIX 时间(1970 年 1 月 1 日 00:00:00 GMT)经过的秒数。
$timestamp = time();
echo $timestamp;
运行以上代码,输出结果为:
1629260446
因为时间戳表示的是距离一个确定时间点的秒数,所以在不同的时区下,获取到的时间戳是不同的。
二、将时间戳转换为日期格式
我们可以使用内置函数 date()
将时间戳转换为指定格式的日期。
$timestamp = time();
$date = date('Y-m-d H:i:s', $timestamp);
echo $date;
运行以上代码,输出结果为:
2021-08-18 11:27:26
date()
函数的第一个参数是日期格式的字符串,第二个参数是要转换的时间戳。在日期格式中,Y
表示年份,m
表示月份,d
表示日期,H
表示小时,i
表示分钟,s
表示秒数。
三、时间戳的加减运算
PHP 提供了一些便利的方法,可以对时间戳进行加减运算。我们可以使用 strtotime()
函数将日期字符串转换为时间戳,然后进行加减运算。
$date_str = '2021-08-18 11:27:26';
$timestamp = strtotime($date_str);
$new_timestamp = $timestamp + 3600; // 往后推1个小时
$new_date = date('Y-m-d H:i:s', $new_timestamp);
echo $new_date;
运行以上代码,输出结果为:
2021-08-18 12:27:26
同时我们也可以传入负数,来进行时间戳的减法。
四、处理时区问题
在 PHP 中,默认的时区为 UTC(即 Coordinated Universal Time,协调世界时),但是我们可以通过 date_default_timezone_set()
函数来设置时区。
date_default_timezone_set('Asia/Shanghai');
$timestamp = time();
$date = date('Y-m-d H:i:s', $timestamp);
echo $date;
运行以上代码,可以得到东八区的当前时间。 在实际应用中,我们需要根据不同的需求来对时间戳进行时区的转换,这是 PHP 中常见的一个问题。
五、时间戳与 MySQL 的 DATE/DATETIME 互相转换
在实际的项目中,我们经常会使用 MySQL 数据库存储时间戳,同时在查询时需要将时间戳转换为日期格式进行显示。下面是将时间戳插入 MySQL 的代码。
$mysqli = new mysqli('localhost', 'user', 'password', 'database');
if ($mysqli->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
exit();
}
$timestamp = time();
$query = "INSERT INTO table_name(time_column) VALUES (FROM_UNIXTIME($timestamp))";
$mysqli->query($query);
上述代码中通过函数 FROM_UNIXTIME()
将时间戳转换为 MySQL 的日期时间类型进行存储。
如果我们需要将 DATE/DATETIME 类型的数据转化为时间戳,则可以用 MySQL 内置函数 UNIX_TIMESTAMP()
。
$mysqli = new mysqli('localhost', 'user', 'password', 'database');
if ($mysqli->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
exit();
}
$query = "SELECT UNIX_TIMESTAMP(time_column) AS timestamp FROM table_name";
$result = $mysqli->query($query);
$row = $result->fetch_assoc();
$timestamp = $row['timestamp'];
echo $timestamp;
上述代码将查询结果中的 DATE/DATETIME 类型的数据通过函数 UNIX_TIMESTAMP()
转换为时间戳。
六、总结
本文从获取当前时间戳、将时间戳转换为日期格式、时间戳的加减运算、处理时区问题以及时间戳与 MySQL 的 DATE/DATETIME 相互转换几个方面详细地介绍了 PHP 时间戳的使用方法。这些技巧在我们的日常开发中都有很好的应用,希望大家可以在实际的项目中灵活运用。