如果我有此日期:"16/2/2014 3:41:01 PM"
,并希望将其更改为以下格式:"2014-02-16 15:41:01"
。
我怎么能用PHP做到这一点?
我试过这个:
$date = "16/2/2014 3:41:01 PM"
$newDate = date("Y-m-d H:i:s", strtotime($date));
但它不断返回"1970-01-01 00:00:00"
。
答案 0 :(得分:1)
您的$date
字符串的当前格式在PHP读取和分析日期方面无效 - 请参阅以下两个URL了解具体信息:
http://php.net/manual/en/function.strtotime.php
http://php.net/manual/en/datetime.formats.php
基本上,当使用斜杠(/
)作为日期分隔符时,PHP假定您输入MM/DD/YYYY
。如果可能的话,我会看到更新创建日期字符串的任何输入以保存MM/DD/YYYY
格式 - 这可能是最好的解决方案。
但是,如果这不是一个选项,根据您提供的内容,一种方法是将16
和2
交换为从DMY转换为MDY格式。以下是使用explode()
和字符串连接如何执行此操作的示例:
<?php
// The original string you provided, with a date in `DD/MM/YYYY` format
$dateString = "16/2/2014 3:41:01 PM";
// The explode function will let us break the string into 3 parts, separated by the forward slashes. Using your example, these gives us an array containing the following:
// 0 => '16'
// 1 => '2'
// 2 => '2014 3:41:01 PM'
$stringPieces = explode('/', $dateString, 3);
// Piece the above array back together, switching the places of entries 0 and 1 to create a date in the format `MM/DD/YYYY`. This results in:
// 2/16/2014 3:41:01 PM"
$newDateString = $stringPieces[1] . '/' . $stringPieces[0] . '/' . $stringPieces[2];
// Use the reformatted date string in the date() function:
$newDate = date("Y-m-d H:i:s", strtotime($newDateString));
var_dump($newDate);
我的测试中var_dump()
的输出为string(19) "2014-02-16 15:41:01"
答案 1 :(得分:1)
使用此功能
1:此功能可以帮助您
function date_his($date = '')
{
if ($date == '') {
return $date = date("Y-m-d H:i:s");
} else {
$date = date("Y-m-d H:i:s", strtotime($date));
}
return $date;
}
2:当存储到数据库时,像这样调用这个函数
$date = date_his();
它会考虑current date
和current time
3:如果您想要保存来自日期字段调用的date
$date = date_his($_POST['field_name']);
它会将任何日期和时间格式转换为YYYY-mm-dd HH:mm:ss