PHP转换日期格式dd / mm / yyyy => YYYY-MM-DD

时间:2012-04-24 22:36:44

标签: php date formatting mktime

  

可能重复:
  PHP Date String Format

我正在尝试从dd/mm/yyyy => yyyy-mm-dd转换日期。我使用了mktime()函数和其他函数,但我似乎无法使它工作。我使用explode作为分隔符设置了'/'原始日期,但我没有成功更改格式并将'/''-'交换。

任何帮助将不胜感激。

5 个答案:

答案 0 :(得分:213)

  

m/d/yd-m-y格式的日期通过查找消除歧义   在各个组件之间的分隔符处:如果分隔符是a   斜线(/),然后是美国m/d/y;而如果   分隔符是破折号(-)或点(.),然后是欧洲d-m-y   假设格式。检查more here

使用默认日期功能。

$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));

答案 1 :(得分:83)

尝试使用DateTime::createFromFormat

$date = DateTime::createFromFormat('d/m/Y', "24/04/2012");
echo $date->format('Y-m-d');

输出

2012-04-24

答案 2 :(得分:29)

这是另一种不使用date()的解决方案。不那么聪明:)

$var = '20/04/2012';
echo implode("-", array_reverse(explode("/", $var)));

答案 3 :(得分:3)

这样做:

date('Y-m-d', strtotime('dd/mm/yyyy'));

但要确保&#d; / mm / yyyy'是实际日期。

答案 4 :(得分:1)

我可以看到很好的答案,所以没有必要在这里重复,所以我想提供一些建议:

我建议使用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);

通过这种方式,您可以避免处理日期格式,转换和时区的麻烦,因为您的日期将采用紧凑,时区无关(始终为UTC)的标准格式(Unix时间戳),并在编程中得到广泛支持语言和数据库。