0

我有一个time()用于记录主题发布时间的应用程序。我已经这样做了很长时间,而我使用该方法的唯一故障是时间总是差一个小时(主要是我从未研究过的 DST 问题)。

我想切换到该DateTime方法,因为我也在切换到 Twig,它在设置时区时使用该日期格式。

但据我所知,您不能使用时间戳来解析日期。我的问题是,你如何输入日期并解析它,如果不是,他们在寻找什么格式time()

4

2 回答 2

0

根据它的声音,您的服务器的默认时区是 UTC。我建议您尝试将default_timezone设置更改为php.ini适用 DST 的设置。这意味着当您使用 时date(),将针对 DST 正确调整结果输出。

于 2011-09-29T00:25:35.597 回答
0

您不能使用时间戳来解析日期

有一种方法,如果您的 php 版本 >=5.3 :

$time = time();//or other time
$date = DateTime::createFromFormat('U',$time);

但事实上,使用时间戳有点奇怪,因为 DateTime 不依赖它。如果您的日期是英语或“法语”(即d/m/y),您可以使用 datetime 构造函数直接解析日期字符串。您还可以创建自定义格式。

你如何输入一个日期并解析它,如果不是 time(),他们在寻找什么格式

如果是标准格式日期:

$date = new DateTime($yourString);//would throw an exception if the format is wrong

如果是自定义格式,例如 DD/MM/YYYY 14h32mins

$date = DateTime::createFromFormat('d/m/Y h\hi\m\i\n\s',$yourString);
if($date === false){//if format does not fit
   exit('Your wrong !');
}

我有一个使用 time() 记录主题发布时间的应用程序。

非常糟糕的做法。在 MySQL 中,您有 DateTime 格式(每个关系数据库系统都有自己的等价物)来存储日期时间,并且与 PHP 中的 DateTime 构造函数完全兼容,因此迁移到它(使用 FROM_TIMESTAMP 更改为 DateTime)。

于 2012-12-15T19:16:28.940 回答