我有一个time()
用于记录主题发布时间的应用程序。我已经这样做了很长时间,而我使用该方法的唯一故障是时间总是差一个小时(主要是我从未研究过的 DST 问题)。
我想切换到该DateTime
方法,因为我也在切换到 Twig,它在设置时区时使用该日期格式。
但据我所知,您不能使用时间戳来解析日期。我的问题是,你如何输入日期并解析它,如果不是,他们在寻找什么格式time()
?
根据它的声音,您的服务器的默认时区是 UTC。我建议您尝试将default_timezone
设置更改为php.ini
适用 DST 的设置。这意味着当您使用 时date()
,将针对 DST 正确调整结果输出。
您不能使用时间戳来解析日期
有一种方法,如果您的 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)。