我有一个使用JQuery(MMDDYYYY
)从PHP发布的日期值,我想使用PHP将此日期格式转换为YYYYMMDD
。
$fromDate=str_replace("'","''",trim($_POST['p']));
echo "-->".$year = substr($fromDate, 6, 4)."<br>";
echo "-->".$month = substr($fromDate, 0, 2)."<br>";
echo "-->".$date = substr($fromDate, 3, 2)."<br>";
echo $new_date = date( 'Ymd', strtotime($month, $date, $year ));
假设在上面的代码中我输入的日期为070122010
。最后一行的new_date
给了我20100714
。我不知道为什么要给今天的约会。我已经尝试了mktime
和strtotime
,但两者都给了我相同的结果。所需的结果为20100712
(YYYYMMDD
)。
答案 0 :(得分:5)
DateTime class DateTime::createFromFormat函数可以执行您想要的操作,只要您拥有PHP 5.3.0或更高版本:
$date = DateTime::createFromFormat('mdY', '12312010');
echo $date->format('Ymd');
// 20101231
echo $date->format('Y-m-d');
// 2010-12-31
echo $date->format('Y-M-d');
//2010-Dec-31
答案 1 :(得分:4)
strtotime($old_date)
无法使用,因为MMDDYYYY
不是有效的日期字符串:http://www.php.net/manual/en/datetime.formats.date.php
preg_replace("/([0-9]{2})([0-9]{2})([0-9]{4})/","$3$1$2",$old_date);
或更短的版本:
preg_replace("/([0-9]{4})([0-9]{4})/","$2$1",$old_date);
答案 2 :(得分:3)
strtotime
无效,因为MMDDYYYY
不是有效的日期字符串:
preg_replace("/([0-9]{2})([0-9]{2})([0-9]{4})/","$3$1$2", $orig_date);
答案 3 :(得分:3)
您不需要拆分日期。所有你需要做的就是把年份推到前面。
$orig = '01022010';
$new = substr($orig,4).substr($orig,0,4);
答案 4 :(得分:2)
以下是两种方式:
$d = preg_replace("/([0-9]{4})([0-9]{4})/", "$2$1", $originalDate);
或
$d = substr($originalDate, 4, 4) . substr($originalDate, 0, 4);
如果其中一个对你更有意义,我建议你使用那个。否则,我怀疑第二个会稍快一些,但我还没有测试过。
答案 5 :(得分:1)
function mmddyyyy_to_yyyymmdd ($input) {
$monthdays = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
if ( !preg_match('/\\A\\d{8}\\Z/', $input) ) {
return false;
}
$month = (int)substr($input, 0, 2);
$day = (int)substr($input, 2, 2);
$year = (int)substr($input, 4);
if ( $year % 4 == 0 and
( $year % 100 != 0 or $year % 400 == 0 )
) {
$monthdays[1] = 29;
}
if ( $month < 1 or
$month > 12 or
$day < 1 or
$day > $monthdays[$month-1]
) {
return false;
}
if ( $month < 10 ) { $month = '0'.$month; }
if ( $day < 10 ) { $day = '0'.$day; }
while ( strlen($year) < 4 ) {
$year = '0'.$year;
}
return $year.$month.$date;
}
答案 6 :(得分:0)
$new_date = date("Ymd", strtotime($old_date));
答案 7 :(得分:0)
$data = strptime('12242010','%m%d%Y');
$date = mktime(
$data['tm_hour'],
$data['tm_min'],
$data['tm_sec'],
$data['tm_mon']+1,
$data['tm_mday'],
$data['tm_year']+1900);
echo date('Ymd',$date);
答案 8 :(得分:0)
使用substr会更快:http://php.net/manual/de/function.substr.php
$orig="20072010"; // DDMMYYYY
$new=substr($orig,5,4)+substr($orig,3,2)+substr($orig,0,2); // YYYYMMDD
值得一读: http://www.php.net/manual/en/datetime.formats.date.php
答案 9 :(得分:-2)
这是我的答案。最后我成功了。
date( 'Ymd', mktime(0,0,0,$month, $date, $year ));