在 PHP 中,可以使用 strtotime() 函数将任意格式的日期时间字符串转换为 Unix 时间戳。具体实现可以按照以下步骤:
获取任意格式的日期时间字符串,比如:
$date_str = '2022-03-15 10:30:00';
使用 strtotime() 函数将日期时间字符串转换为 Unix 时间戳:
$timestamp = strtotime($date_str);
如果转换成功,$timestamp 就会保存 Unix 时间戳,表示自 Unix 纪元(1970 年 1 月 1 日 00:00:00 UTC)以来的秒数。如果转换失败,strtotime() 函数会返回 false。
例如,以下代码将日期字符串转换为 Unix 时间戳:
$date_str = '2022-03-15 10:30:00';
$timestamp = strtotime($date_str);if ($timestamp !== false) {echo $timestamp;
} else {echo '转换失败';
}
输出结果为:
1647346200
表示该日期时间对应的 Unix 时间戳为 1647346200 秒。
需要注意的是,Excel 中的日期时间格式和 PHP 中的日期时间格式不同,需要进行一些转换。具体实现可以按照以下步骤:
获取 Excel 中的日期时间字符串,比如:
$date_str = '44258.7083333333';
将 Excel 中的日期时间格式转换为 PHP 中的日期时间格式。Excel 中的日期时间格式是以基准日期 1900 年 1 月 1 日为起点,每过一天就加 1,每过一秒就加上相应的秒数。PHP 中的日期时间格式是以基准日期 1970 年 1 月 1 日为起点,每过一秒就加 1。因此,需要将 Excel 中的日期时间值减去基准日期的差值(即 25569 天),再乘以一天的秒数(即 86400 秒),得到相对于 Unix 纪元的秒数。然后再将该秒数加上时区偏移量即可。
$excel_date = $date_str - 25569; // Excel 基准日期与 Unix 基准日期的差值
$unix_timestamp = $excel_date * 86400; // 一天的秒数
$unix_timestamp += strtotime('1970-01-01 00:00:00') - strtotime('1900-01-01 00:00:00'); // 加上时区偏移量
如果转换成功,$unix_timestamp 就会保存 Unix 时间戳,表示自 Unix 纪元以来的秒数。如果转换失败,strtotime() 函数会返回 false。
例如,以下代码将 Excel 中的日期时间字符串转换为 Unix 时间戳:
$date_str = '44258.7083333333';
$excel_date = $date_str - 25569;
$unix_timestamp = $excel_date * 86400;
$unix_timestamp += strtotime('1970-01-01 00:00:00') - strtotime('1900-01-01 00:00:00');if ($unix_timestamp !== false) {echo $unix_timestamp;
} else {echo '转换失败';
}
输出结果为:
1647201000
表示该日期时间对应的 Unix 时间戳为 1647201000 秒。