我有一个别人写的自定义Moodle插件。用户在插件中输入一个日期,该日期将被记录在学习活动中。
最初我有一个问题,插件会错误的一些日期和混淆AU(英国)日期格式和美国日期格式。我从这里使用解决方案修复了这个问题(如何使strtotime解析日期在澳大利亚(即英国)格式:dd/mm/yyyy?)。
但是现在一个奇怪的错误时不时地弹出,某些日期(特别是2015年7月2日)得到它的年和日调换。所以02-07-2015
被记录为15-07-2002
这似乎不是AU/US日期的事情,因为它应该只是翻转日期和月份,而不是年。而且,它只会在特定的日期发生。01-07-2015
和03-07-2015
工作良好
更令人沮丧的是,我不能在我们的登台服务器上复制这个。这个问题只发生在我们的生产服务器上,即使它们都运行相同的代码和相同版本的Moodle。
我可以分享的代码是我是如何处理日期的,这是…
$date[$i] = strtotime(str_replace('/', '-', $date[$i]));
这让我想知道是否有一些PHP设置可能会导致这种情况。还是有什么我没注意到的?
仅供参考,生产服务器是由付费主机提供商维护的,我没有访问php.ini文件的权限(但我可以访问临时服务器)。
有人遇到这样的问题吗?或者你能建议我从哪里开始找问题吗?
尝试像下面这样调整日期函数的格式,以代替使用str_replace
if $dat = '2015-07-17';
$date= date('d-m-Y', strtotime($dat));
或
$date= date('d:m:Y', strtotime($dat));
或
$date= date('d/m/Y', strtotime($dat));
或
$date= date('m-d-Y', strtotime($dat));