<?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的答案。
我假设在第一个例子中它默认的日期是本月的第一天?任何人都可以对此有所了解......
答案 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'));