您的位置:

PHP当前时间戳

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 时间戳的使用方法。这些技巧在我们的日常开发中都有很好的应用,希望大家可以在实际的项目中灵活运用。