我有一个问题,无法解决在我的表格上,日期格式类似
dd/mm/yyyy hh/mm/ss
需要将案例转换为在数据库中注册,列类型为时间戳
所以我使用这个基本功能
function verify($a){
return $newDate = date("Y-m-d H:i:s", strtotime($a));
}
问题是,当我把超过13天的日期不起作用。
只是滚雪球一样的东西:
function verify($a) {
$dt = explode(' ',$a);
$dt1 = explode('/',$dt[0]);
$dt2 = explode('/',$dt[1]);
return $newDate = date('Y-m-d H:i:s',mktime($dt2[0],$dt2[1],$dt2[2],$dt1[1],$dt1[0],$dt1[2]));
}
尝试这个
function change_to_timestamp($a) {
$dt = explode(' ',$a);
$date1 =str_replace('/','-',$dt[0]);
$date2 = str_replace('/',':',$dt[1]);
return date('Y-m-d H:i:s',mktime($date1.$date2));
}
strtotime()可能不是该格式的最佳选择,因为您很可能会在日期的"dd"answers"mm"部分之间遇到一些歧义。你不能做13天,因为它认为你在努力13个月。
也许一个更好的函数是DateTime::CreateFromFormat(),因为您有一个已知的日期格式作为输入。http://www.php.net/manual/en/datetime.createfromformat.php
function verify($a){
$date = DateTime::CreateFromFormat("d/m/Y H/i/s", $a);
return date("Y-m-d H:i:s", $date->getTimestamp());
}
这个概念应该有效,但代码没有经过复制/粘贴测试。
希望这有帮助。
编辑:修复了一些复制/粘贴语法错误。没有提到这个答案需要php>=5.3。
此外,我的第一个答案一直困扰着我,把约会的新旧方式混合在一起,所以有了这个:
function verify($a){
$date = DateTime::CreateFromFormat("d/m/Y H/i/s", $a);
return $date->format("Y-m-d H:i:s");
}
或者更便携的东西:
function ChangeDateFormat($old_format, $new_format, $date_string) {
$date = DateTime::CreateFromFormat($old_format, $date_string);
return $date->format($new_format);
}
可以称之为:
$newDate = ChangeDateFormat("d/m/Y H/i/s", "Y-m-d H:i:s", $oldDate);