我想将一个日期从dd/mm/yyyy => yyyy-mm-dd
格式进行转换。我已经使用了mktime()
函数和其他函数,但似乎不能使其正常工作。 我已经成功使用'/'
作为分隔符来拆分原始日期,但无法成功更改格式并将'/'
替换为'-'
。
非常感谢任何帮助。
我想将一个日期从dd/mm/yyyy => yyyy-mm-dd
格式进行转换。我已经使用了mktime()
函数和其他函数,但似乎不能使其正常工作。 我已经成功使用'/'
作为分隔符来拆分原始日期,但无法成功更改格式并将'/'
替换为'-'
。
非常感谢任何帮助。
日期格式为
m/d/y
或d-m-y
时,通过查看各个组件之间的分隔符来消除歧义: 如果分隔符是斜杠(/
),则假定使用美国的m/d/y
格式; 而如果分隔符是短划线(-
)或句点(.
),则假定使用欧洲的d-m-y
格式。查阅更多信息。
使用默认的日期函数。
$var = "20/04/2012";
echo date("Y-m-d", strtotime($var) );
编辑 我刚刚测试了一下,不知怎么回事,PHP不能很好地处理dd/mm/yyyy格式。这里有另一个解决方案。
$var = '20/04/2012';
$date = str_replace('/', '-', $var);
echo date('Y-m-d', strtotime($date));
尝试使用DateTime::createFromFormat
$date = DateTime::createFromFormat('d/m/Y', "24/04/2012");
echo $date->format('Y-m-d');
输出
2012-04-24
编辑:
如果日期是5/4/2010(无论是D/M/YYYY还是DD/MM/YYYY格式),则使用以下方法将其转换为2010-4-5(无论是YYYY-MM-DD还是YYYY-M-D格式)。
$old_date = explode('/', '5/4/2010');
$new_data = $old_date[2].'-'.$old_date[1].'-'.$old_date[0];
输出:
2010-4-5
下面是另一种不使用date()函数的解决方案。这个方法并不是很聪明 :)
$var = '20/04/2012';
echo implode("-", array_reverse(explode("/", $var)));
date('Y-m-d', strtotime('dd/mm/yyyy'));
/
分隔符读取日期作为美国格式,即m/d/Y
,而使用-
作为欧洲格式d-m-Y
。请参见已接受答案的编辑和php文档:http://php.net/manual/en/function.strtotime.php - 注意:在m/d/y或d-m-y格式中的日期通过查看各个组件之间的分隔符来消除歧义:如果分隔符是斜杠(/),则假定为美国格式m/d/y;而如果分隔符是破折号(-)或点号(.),则假定为欧洲格式d-m-y。 - haakym我能看到很棒的答案,所以这里不需要重复了,我想提供一些建议:
我建议使用 Unix 时间戳整数来处理时间内部,而不是使用人类可读的日期格式,然后使用 PHP 的 date()
函数将时间戳值转换为用户显示的人类可读日期格式。以下是如何实现的简单示例:
// Get unix timestamp in seconds
$current_time = date();
// Or if you need millisecond precision
// Get unix timestamp in milliseconds
$current_time = microtime(true);
$current_time
(存储、添加或减去等),当您需要向用户显示日期值时,可以使用date()
来指定所需的日期格式:// Display a human-readable date format
echo date('d-m-Y', $current_time);