0

我有一个问题,无法在我的表格上解决日期格式的问题

dd/mm/yyyy hh/mm/ss

需要转换case在数据库中注册,列类型为timestamp

所以我正在使用这个基本功能

 function verify($a){               
    return $newDate = date("Y-m-d H:i:s", strtotime($a));
 }

问题是当我放置超过 13 天时,日期不起作用。

4

3 回答 3

1

只是滚雪球:

 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]));
 }
于 2013-08-01T02:11:25.937 回答
0

试试这个

 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));
 }
于 2013-08-01T02:11:41.453 回答
-1

strtotime() 可能不是该格式的最佳选择,因为您很可能在日期的“dd”和“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);
于 2013-08-01T02:17:54.880 回答