Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何根据mysql日期格式转换php日期格式?_Php - Fatal编程技术网

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

如何根据mysql日期格式转换php日期格式?,php,Php,我有一个表单可以将日期保存到mysql数据库中。在保存日期之前,我需要转换格式。如何才能比下面的代码做得更优雅?我知道它可以,但不知道如何正确地做 //Get the date (22/03/2018) $start=$_POST['start']; //Remove the /and replace with - $starttime = str_replace('/', '-', $start); convert the format to y-m-d $st

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

//Get the date (22/03/2018)
     $start=$_POST['start']; 

//Remove the /and replace with -
    $starttime = str_replace('/', '-', $start);

convert the format to y-m-d
    $starttime=date('Y-m-d', strtotime($starttime));

用户在日期字符串上输入strotime,并根据需要设置格式:

$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');
这是正确的日期表吗?您可以在此处阅读一些信息: 注释中的一部分:“…如果分隔符是斜杠(/),则假定为美式m/d/y;而如果分隔符是破折号(-)或点(.),则假定为欧式d-m-y格式…” 所以这可能会导致一个问题

如果日、月、年的部分已修复,您也可以使用“Rahul Shrivastava”的注释。

查看

这是一个使日期变得非常灵活的最小库,您可以通过composer键入
composer Required nesbot/carbon

这将使您能够执行以下操作

Carbon::createFromFormat('Y-m-d', $date)->toDateTimeString();
// Returns something like 1975-05-21 22:00:00
从那里你可以用它做任何你想做的事情

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

最好的方法
正在使用类的日期时间是:

您应该尝试使用
preg\u split()


它不会给出预期输出哪一个不能正确返回日期?欧式和美式的日期格式是不同的,正如我所读到的,可能会引起问题。
$starttime = preg_replace('/(\d+)\/(\d+)\/(\d+)/', "$3-$2-$1", $_POST['start']);
$fecha = DateTime::createFromFormat('d/m/Y', $_POST['start']);
echo $fecha->format('Y-m-d');
$start=$_POST['start'];
//Get the date (22/03/2018)       
list($day,$month,$year) = preg_split('/[\/\s:]+/', $start); 
    echo $date = $year . '-' . $month. '-' .  $day ;