我有一个将日期保存到mysql数据库的表单。在保存日期之前,我需要转换格式。如何比我下面的代码更优雅地完成这项工作?我知道它可以但不能确定如何正确地做到这一点。
$val=$shift (o/p 9:30 am - 12:00pm)
答案 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 ;