我目前的日期格式为:日,日24小时,秒和时区。我想把它变成Y-m-d。
当前日期:
Fri, 23 Mar 2018 20:28:34 0000
最后日期:
2018-03-23
我正在使用PHP来执行此操作。日期是硬编码的,所以我根本无法调用date()函数。
答案 0 :(得分:1)
您可以使用createFromFormat()
转换日期:
$str = "Fri, 23 Mar 2018 20:28:34 0000";
$str = preg_replace('~\s(\d{4})$~', '+$1', $str); // change '0000' to '+0000'
$d1 = DateTime::createFromFormat("D, d M Y H:i:s O", $str) ;
echo $d1->format("Y-m-d") ;
// or
// echo date("Y-m-d", strtotime($str)) ;
输出:
2018-03-23
或者,正如@Andreas指出的那样,您可以使用substr()
删除时区:
$str = "Fri, 23 Mar 2018 20:28:34 0000";
$str = substr($str, 0,-5) ;
echo date("Y-m-d", strtotime($str)) ;
答案 1 :(得分:1)
另一种选择:
$str = "Fri, 23 Mar 2018 20:28:34 0000";
$str = trim( preg_replace( "/[0-9\+]*$/", "", trim($str) ) );
echo date( "Y-m-d", strtotime($str) );
输出:
2018-03-23
答案 2 :(得分:0)
您可以尝试使用此代码
echo date( "Y-m-d", strtotime(preg_replace( "/[0-9]+$/", "", "Fri, 23 Mar 2018 20:28:34 0000")) );
这将输出您需要的相同答案
答案 3 :(得分:0)
如果日期是硬编码的,那就意味着它总是有三个字母的日子,逗号则是日期,然后是时间和时区。
字符串的长度应始终相同。
这可以用来获得优势。
$str = "Fri, 23 Mar 2018 20:28:34 0000";
Echo date("Y-m-d", strtotime(substr($str,5,11)));
这里我只使用strtotime和date函数中的23 Mar 2018
无需正则表达式或修剪或向时区添加+或 - 。