PHP将日期格式从长日期更改为基本日期

时间:2018-03-24 08:58:05

标签: php web

我目前的日期格式为:日,日24小时,秒和时区。我想把它变成Y-m-d。

当前日期:

Fri, 23 Mar 2018 20:28:34  0000

最后日期:

2018-03-23

我正在使用PHP来执行此操作。日期是硬编码的,所以我根本无法调用date()函数。

4 个答案:

答案 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 无需正则表达式或修剪或向时区添加+或 - 。