在php中转换日期时错误的日期

时间:2016-04-13 15:00:15

标签: php mysql date

我使用以下代码在php中转换日期,但转换后我的日期错误。我在我的数据库表中使用CURRENT_TIMESTAMP作为默认值。我从javascript传递“date”变量。

任何人都可以解决这个问题。提前谢谢。

$date1=mysql_real_escape_string($data->date);
print_r($date1) // This is one displaying the right date.
$date=strtotime($date1);
$timedatenew=date('Y-m-d H:i:s', $date);
print_r($timedatenew) // This is displaying the date like "1970-01-01 01:00:00". 

2 个答案:

答案 0 :(得分:2)

正如你所说,你的日期格式为dd/mm/yy,请尝试使用此

  $timedatenew=  date("Y-m-d H:i:s",strtotime(str_replace('/', '-', $date ))));

将其转换为 -

答案 1 :(得分:0)

您得到错误的日期,因为当您使用date('Y-m-d',strtotime($date))转换日期格式时,通过查看各个组件之间的分隔符,可以消除m/d/Yd-m-Y格式的日期的歧义: / p>

如果分隔符是斜杠(/),则假定使用美国m/d/Y ;而如果分隔符是破折号(-)或点(。),则假定使用欧洲d-m-Y格式。在此处查看详细信息:php.net/manual/en/function.strtotime.php

(以上hjpotter92在同一类型的其他问题中进行了评论)

如果您想要完全正确的格式,然后使用DateTime对象,则可以使用任何字符串格式来格式化日期,它也可以与-以外的其他格式化程序(如/.一起使用)

这意味着您可以从以下日期更改日期格式:

d/m/Yd-m-Yd.m.Y更改为Y-m-d之类的任意格式。

$date = DateTime::createFromFormat('d/m/Y', "12/07/2019");
echo $date->format('Y-m-d');

// output: 2019-07-12

请参阅以下来自php官方文档DateTime::createFromFormat的示例

示例DateTime :: createFromFormat()

面向对象的样式

<?php
     $date = DateTime::createFromFormat('j-M-Y', '15-Feb-2009');
     echo $date->format('Y-m-d');
?>

程序样式

<?php
     $date = date_create_from_format('j-M-Y', '15-Feb-2009');
     echo date_format($date, 'Y-m-d');
?>

以上示例将输出:

2009-02-15