Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/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
Php 将自定义日期格式字符串转换为yyyy/mm/dd_Php_Date_Datepicker_Date Format - Fatal编程技术网

Php 将自定义日期格式字符串转换为yyyy/mm/dd

Php 将自定义日期格式字符串转换为yyyy/mm/dd,php,date,datepicker,date-format,Php,Date,Datepicker,Date Format,我的日期格式有点像这样: 2014年6月29日星期日08:00:00 GMT+0800(马来半岛标准时间) 这是由于当我试图输出从validate函数获得的值时,x-editable datepicker产生的 但是,无论从何处获取日期格式,如何将此日期转换为yyyy/mm/dd格式?它不是一个日期对象,而是一个输出上述内容的长字符串。我需要能够将其转换为2014-06-29。非常感谢 您应该使用正则表达式提取字符串的相关部分,然后对其应用PHP日期函数: $str = "Sun Jun 29

我的日期格式有点像这样:

2014年6月29日星期日08:00:00 GMT+0800(马来半岛标准时间)

这是由于当我试图输出从validate函数获得的值时,x-editable datepicker产生的


但是,无论从何处获取日期格式,如何将此日期转换为
yyyy/mm/dd
格式?它不是一个日期对象,而是一个输出上述内容的长字符串。我需要能够将其转换为2014-06-29。非常感谢

您应该使用正则表达式提取字符串的相关部分,然后对其应用PHP日期函数:

$str = "Sun Jun 29 2014 08:00:00 GMT+0800 (Malay Peninsula Standard Time)";
$pat = "/(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat) (?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (?:0?[1-9]|[1-2][0-9]|3[0-1]) [0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} GMT\\+[0-9]{4}/";
$date = preg_match($pat, $str, $mat) ? date("Y-m-d", strtotime($mat[0])) : "";

您忘记了字符串“(马来半岛标准时间)”。。这会使转换日期出错。。它输出“1970-01-01”。我怎样才能摆脱这个?谢谢!:)不管怎么说,我喜欢strtotime的主意。。但我找到了一个解决方案preg_replace(“/([^)]+)/”,“,$dateString);这实际上删除了括号内的所有字符串。不过还是要谢谢你!:)使用类似于我的答案中的正则表达式也将验证日期字符串。但是,如果您只需要字符串中位于左括号之前的部分,您可以选择:
strstrstr($str,“(”,true)
,这将比任何正则表达式选项都要快。@muffin您的意思是
preg\u replace('~\s*\(.+?\)\s*$$,'$str)