【问题标题】:What's the best way to convert a date and time into a timestamp using php?使用php将日期和时间转换为时间戳的最佳方法是什么?
【发布时间】:2012-06-28 03:12:32
【问题描述】:

我需要使用 php 将日期和时间 (GMT) 转换为时间戳。以下代码显示了我目前正在使用的内容:

<?php
$date="2012-06-29 10:50";
$timestamp = strtotime($date);
echo $timestamp;
?>

但是,当我在在线转换器 (http://www.epochconverter.com) 中测试时间戳时,结果日期是 2012 年 6 月 29 日,格林威治标准时间 8:50 或 2 小时前。 strtotime() 函数是否可能并不完全准确,而只是对时间的估计?如果是这样,我可以使用更好的方法来获取确切时间吗?

谢谢。

【问题讨论】:

  • 这是服务器的时间,如果您不与服务器共享同一时区,即您的服务器在欧洲而您不在欧洲,那么您将生成不同的时间,我想

标签: php timestamp strtotime


【解决方案1】:

strtotime 假设您正在转换服务器本地时间的字符串,因此如果服务器时区超出两个小时,结果也将如此。

the manual 中的 cmets 提出了几个解决方案,您可以将 UTC 附加到您的日期:

$timestamp = strtotime($date.' UTC');

或者您可以更改脚本的默认时区(这将适用于所有其他时间函数!):

date_default_timezone_set('UTC');
$timestamp = strtotime($date);

作为最后的选择,您可以尝试date_create_from_format,它允许您指定字符串的确切格式:

$datetime = date_create_from_format('Y-m-d H:i', $date, new DateTimeZone('UTC'));

$timestamp = date_format($datetime, 'U');
// Alternatively (thanks Herbert) - 5.3+ only
$timestamp = date_timestamp_get($datetime);

【讨论】:

  • 感谢您提供的信息。我没有考虑到它正在转换为我服务器的本地时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-26
  • 1970-01-01
  • 2013-12-17
  • 2013-09-12
相关资源
最近更新 更多