我使用以下代码在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".
答案 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/Y
或d-m-Y
格式的日期的歧义: / p>
如果分隔符是斜杠(/),则假定使用美国m/d/Y
;而如果分隔符是破折号(-)或点(。),则假定使用欧洲d-m-Y
格式。在此处查看详细信息:php.net/manual/en/function.strtotime.php
(以上hjpotter92在同一类型的其他问题中进行了评论)
如果您想要完全正确的格式,然后使用DateTime对象,则可以使用任何字符串格式来格式化日期,它也可以与-
以外的其他格式化程序(如/
或.
一起使用)
这意味着您可以从以下日期更改日期格式:
d/m/Y
或d-m-Y
或d.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