1

我是以下代码将此日期-> 转换18/07/2013mysql支持的格式。

$date = date('Y-m-d', strtotime('18/07/2013'));

理想情况下这应该返回2013-07-18......
但是,问题是它会自动选择字符串:
YEAR as YEAR MONTH as DAY DAY as MONTH

现在,因为它标识18为 a month,所以它超出了范围并显示了默认 date 1970-01-01

我在这件事上浪费了将近两天的时间。

如果有人可以提供帮助,请提前致谢!

4

6 回答 6

5

使用DateTime对象,让 php 了解您将日期传递给它的格式。

$date = DateTime::createFromFormat('d/m/Y', '18/07/2013');
echo $date ->format('Y-m-d');
于 2013-07-02T07:50:47.280 回答
3

尝试这个 :)

echo date('Y-m-d', strtotime(str_replace('/', '-', '18/07/2013')));
于 2013-07-02T07:54:48.507 回答
1

strtotime 参数应该是格式18-07-2013

于 2013-07-02T07:52:54.560 回答
1

您需要设置日期的时区,您的日期被解析为美国日期,美国日期格式为 mm/dd/yyyy...

date_default_timezone_set('Europe/Berlin');

也使用正确的注册。日期函数的表达式

$date = date( 'YY "/" MM "/" DD', strtotime('18/07/2013'));
于 2013-07-02T07:59:47.523 回答
0

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

观察:

echo date("jS F, Y", strtotime("11.12.10")); 
// outputs 10th December, 2011 

echo date("jS F, Y", strtotime("11/12/10")); 
// outputs 12th November, 2010 

echo date("jS F, Y", strtotime("11-12-10")); 
// outputs 11th December, 2010  
于 2013-07-02T08:09:49.600 回答
0

问题在于 PHP 中的日期字符串

  • 以斜线分隔的日期值假定为美国顺序:m/d/y
  • 由破折号分隔的日期值假定为欧洲顺序:dmy

你想知道的关于谈话日期的一切都在下面

http://shakalya.com/resolve-php-date-format-problem/

于 2018-03-12T17:34:13.150 回答