我有一个表格,其中以英国格式输入日期,我需要将其转换为
yyyy-mm-dd
e.g。输入的日期为:31/03/2013
我想将其转换为'2013-03-31'
以进行数据库插入。
我使用了以下奇怪的作品:
$dateInput = $mysqli->real_escape_string($_POST['date']);
$show_date = date('Y-m-d', strtotime($dateInput));
有更好的方法吗?
答案 0 :(得分:16)
您可能想要使用DateTime::createFromFormat:
$show_date = DateTime::createFromFormat('d/m/Y', $dateInput)->format('Y-m-d');
答案 1 :(得分:11)
试一试。
$dateInput = explode('/','31/03/2013');
$ukDate = $dateInput[2].'-'.$dateInput[1].'-'.$dateInput[0];
答案 2 :(得分:3)
以下奇怪的作品有时只会起作用:
$show_date = date('Y-m-d', strtotime($dateInput));
这不是其他更短的方式......我一生都在使用这个......直到现在还没有发现任何古怪的东西..检查是否还有其他东西是弄乱了
除此之外是
$timestamp = strtotime(str_replace('/', '.', $dateInput));
$mysql_date = date('Y-m-d', $timestamp);
答案 3 :(得分:1)
PHP 5.3及以上
使用DateTime::createFromFormat.它允许您指定一个精确的掩码 - 使用date()语法 - 用。解析传入的字符串日期。
PHP 5.2及更低版本
您必须使用substr()手动解析元素(年,月,日,小时,分钟,秒),并将结果交给mktime(),这将为您构建时间戳。
答案 4 :(得分:1)
试试这个:
$dte = '28/03/2013';
$dt = new DateTime();
$date = $dt->createFromFormat('d/m/Y', $dte);
echo $date->format('Y-m-d');
输出:2013-03-28
答案 5 :(得分:1)
$date_array = explode("/",$your_date); // split the array
$var_day = $date_array[0]; //day seqment
$var_month = $date_array[1]; //month segment
$var_year = $date_array[2]; //year segment
echo $new_date_format = "$var_year-$var_day-$var_month"; // join them together
这将有效
答案 6 :(得分:0)
一些替代方法。两个输出2013-03-31:
方法1 - “看马,没有功能”
<?php
$in = '31/03/2013';
echo $in[6].$in[7].$in[8].$in[9].'-'.$in[3].$in[4].'-'.$in[0].$in[1];
?>
方法2 - 正则表达式
<?php
echo ($output = preg_replace('!^([0-9]{2})/([0-9]{2})/([0-9]{4})$!',"$3-$2-$1",$input));
?>