一、获取当前时间戳
我们可以使用 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()` 转换为时间戳。