如何根据mysql日期格式转换php日期格式?

时间:2018-03-22 09:41:17

标签: php

我有一个将日期保存到mysql数据库的表单。在保存日期之前,我需要转换格式。如何比我下面的代码更优雅地完成这项工作?我知道它可以但不能确定如何正确地做到这一点。

       $val=$shift (o/p 9:30 am - 12:00pm)

5 个答案:

答案 0 :(得分:1)

日期字符串上的用户strtotime并根据需要对其进行格式化:

$datestring = $_POST['start'];
$dateval = strtotime($datestring );
$start = date('Y-m-d', $dateval );

或其他代码:

$datestring = $_POST['start'];
$dateval = new DateTime(datestring);
$start  = $dateval->format('Y-m-d');

这是正确的日期表吗?您可以在此处阅读一些信息:php.net/manual/en/function.strtotime.php 注释中的一部分:“......如果分隔符是斜杠(/),则假设为美国m / d / y;而如果分隔符是破折号( - )或点(。),则假设欧洲dmy格式......“ 所以这可能会导致问题。

如果修复了日,月,年部分,您也可以使用“#Rahul Shrivastava”的评论。

答案 1 :(得分:1)

最好的方式

正在使用 DateTime 类:http://php.net/manual/es/datetime.createfromformat.php

$fecha = DateTime::createFromFormat('d/m/Y', $_POST['start']);
echo $fecha->format('Y-m-d');

答案 2 :(得分:0)

查看Carbon

这是一个最小的库,使日期非常灵活,你可以通过作曲家打字安装composer require nesbot/carbon

这将使您能够执行类似

的操作
Carbon::createFromFormat('Y-m-d', $date)->toDateTimeString();
// Returns something like 1975-05-21 22:00:00

从那里你可以随心所欲地做任何事情!

答案 3 :(得分:0)

另一种可能的解决方案(最简单的解决方案):

$starttime = preg_replace('/(\d+)\/(\d+)\/(\d+)/', "$3-$2-$1", $_POST['start']);

答案 4 :(得分:0)

您应该使用list()

尝试preg_split()
$start=$_POST['start'];
//Get the date (22/03/2018)       
list($day,$month,$year) = preg_split('/[\/\s:]+/', $start); 
    echo $date = $year . '-' . $month. '-' .  $day ;