日期函数参数Ymd

时间:2017-05-03 10:05:54

标签: php

<?php
$start_current_month = date("Y-m"); 
$from = date("Y-m-d", strtotime('-1 month', 
strtotime($start_current_month)));

这给出了2017-04-01的答案。

但如果我改为将第1行改为“Ym”。它给出了2017-04-03的答案。

我假设在第一个例子中它默认的日期是本月的第一天?任何人都可以对此有所了解......

2 个答案:

答案 0 :(得分:1)

将日期格式设置为"Ym"时,最终会得到类似201705的字符串。因为它没有标点符号,所以这是不明确的,您可以通过回显它来查看strtotime()解释它的内容:

echo date("Y-m-d H:i:s", strtotime("201705"));
  

2017-05-04 20:17:05

如您所见,它将其解释为时间,因此它返回“今天20:17:05”。一些额外的例子要检查:

echo date("Y-m-d H:i:s", strtotime("123456"));
  

2017-05-04 12:34:56

echo date("Y-m-d H:i:s", strtotime("1234"));
  

2017-05-04 12:34:00

因为在您的代码中,您实际上并不关心时间,只关心日期,结果是您的所有日期都被解释为“今天”,每次都会给您相同的答案。

答案 1 :(得分:0)

也许Php解释器将日期转换为不同的时间戳,具体取决于它们的格式化。

例如,strtotime(date("Y-m"))的结果与strtotime(date("Ym")).

不同

如果您只是想知道一个月前的日期,那么您可以跳过第一行并使用:date("Y-m-d", strtotime('-1 month'));