【问题标题】:facing issue in strtotime() [duplicate]在 strtotime() 中面临问题 [重复]
【发布时间】:2025-12-03 11:00:02
【问题描述】:

我在 echo date() 中遇到了一些格式问题,例如:

如果我使用 d/m/Y 格式,例如:'18/04/2017',则 date() 无法识别这一点,因为格式包含 /

<?php
  echo date("d-m-Y",strtotime('16/04/2017'));
?>

它将输出:01-01-1970

但是当我使用 m/d/Y 格式时,例如:'04/18/2017' 然后 date() 它可以识别

<?php
  echo date("d-m-Y",strtotime('04/16/2017'));
?>

它将输出:16-04-2017

我没有得到 date() 的这些不同行为,有人可以帮助我吗

【问题讨论】:

标签: php date


【解决方案1】:

正斜杠 (/) 表示美式 M/D/Y 格式,破折号 (-) 表示欧洲 D-M-Y,句点 (.) 表示 ISO Y.M.D.

因此,如果您的日期类似于04/16/2017,请将/ 更改为-,然后对其使用date() 函数将其转换为任何格式。

Reference

Working Code

【讨论】:

【解决方案2】:

您可以使用date_create_from_format 将您的日期转换为您想要的任何格式。您的代码的问题是 strtotime 不支持这种格式。

Learn about strtotime formats

如果你使用dd/mm/yyyy 那么它将无法工作,因为它不属于 strtotime 的支持格式。用于使用

支持的格式:(对于ddmmyyyy

dd [.\t-] mm [.-] YY

示例: 2017 年 16 月 4 日

示例: 16.04.2017

示例: 16\t04t\2017

<?php
ini_set('display_errors', 1);
$date=date_create_from_format("d/m/Y","16/04/2017");
echo $date->format("d-m-Y");

【讨论】:

  • 是的,但我的情况呢
  • 感谢分享 strtotime 格式
  • @BunkerBoy 欢迎 .... :)
【解决方案3】:

另一种方法是将/ 替换为给定日期的-

$date = '16/04/2017';
$date = str_replace("/", "-", $date);
echo date("d-m-Y",strtotime($date));

【讨论】:

  • 谢谢我知道,但我得到了答案