我正在尝试使用pickadate.js使用Laravel 4与PHP混合转换日期。我遇到的问题是当我尝试保存>的日期时2013年。如果我选择2014年1月23日,它将保存至2013年1月23日。
这是通过$_POST
发送到日期变量的内容。
23 January, 2014
这是我的设置
$date = strtotime($scheduler['date']);
转换为UNIX 1358993640(读取2013年1月23日)
$dateFormat = date('l: F d, Y',$date);
哪个成为:
Wednesday: January 23, 2013
我可以使用其他功能吗?或者我需要在strtotime
之前以另一种方式转换时间吗?它的工作时间与2013年一样长。所以我想,一旦它到达2014年,它也会起作用。
答案 0 :(得分:6)
假设文本日期是根据固定格式创建的,您可以改为使用DateTime::createFromFormat
:
$date = DateTime::createFromFormat('d F, Y', $scheduler['date']);
echo $date->format('l: F d, Y');
或者,只需省略逗号:
echo date('l: F d, Y', strtotime('23 January 2014'));
答案 1 :(得分:4)
很奇怪。但找到了解决办法。在运行PHP 5.5的本地设置上进行测试,似乎逗号是造成问题的原因。因此,从输入的数据中删除逗号会产生测试代码所需的结果:
// Set the test data.
$test_data = '23 January, 2014';
// Filter out commas from the '$test_data'
$test_data = preg_replace('/,/', '', $test_data);
// Get the Unix datetime from the test data.
$date = strtotime($test_data);
// Format the Unix datetime.
$dateFormat = date('l: F d, Y', $date);
// Output for debugging.
echo 'date: ' . $date . '<br />';
echo 'dateFormat: ' . $dateFormat . '<br />';
我得到的输出是:
date: 1390453200
dateFormat: Thursday: January 23, 2014