当我运行以下PHP代码时:
$this_year_start = strtotime(new DateTime("first day of this year")->format('d/m/Y'));
$this_year_end = strtotime(new DateTime("last day of this year")->format('d/m/Y'));
我收到以下错误:
PHP Parse error: syntax error, unexpected '->' (T_OBJECT_OPERATOR) in /home/admin/data.php on line 164
我想获得今年开始和今年结束时的unix时间。但这似乎有一些问题格式,并使其转换为unix时间。
答案 0 :(得分:2)
如果要内联访问新创建的对象,则需要将它们包装在括号中,如下所示:
$this_year_start = strtotime((new DateTime("first day of this year"))->format('d/m/Y'));
^ ^
| |
然而,在旧版本的PHP中,这不是一个选项。安全的方法是创建对象,将其分配给变量,然后从新创建的变量中访问这些方法,如:
$date = new DateTime("first day of this year");
$this_year_start = strtotime($date->format('d/m/Y'));
答案 1 :(得分:1)
strtotime()
输出一个Unix时间戳 - 您只需要转换的字符串。
您可以使用strtotime()
日期的文字格式,例如"昨天"或者约会,例如" 1991年3月15日"。
要获得当前年份,您需要知道开始日期和结束日期,因此您可以简单地输入" Jan 01"和" 12月31日"在strtotime()
字符串中:
$this_year_start = strtotime('Jan 01');
$this_year_end = strtotime('Dec 31');
这两个值将输出:
1451624400
1483160400
对于结束日期,如果你想在明年之前做最后一秒,你可以增加一天,少一秒:
$this_year_end = strtotime("Dec 31") + (60 * 60 * 24) - 1;
答案 2 :(得分:1)
年份从1月1日00:00.00开始,到12月31日23:59.59结束。
因此,为了准确,因为我们需要一个答案作为时间戳(使用秒),你应该做这样的事情也应用时间:
// mktime(hour, minute, second, month, day, year)
$this_year_start = mktime(0, 0, 0, 1, 1, date('Y'));
$this_year_end = mktime(23, 59, 59, 12, 31, date('Y'));
答案 3 :(得分:-1)
这有效
$s = new DateTime("first day of this year");
$l = new DateTime("last day of this year");
echo 'First Day = ' . $s->format('d/m/Y'). PHP_EOL;
echo 'Last Day = ' . $l->format('d/m/Y'). PHP_EOL;
echo 'First Timestamp = ' . $s->getTimestamp(). PHP_EOL;
echo 'Last Timestamp = ' . $l->getTimestamp(). PHP_EOL;
输出
First Day = 01/01/2016
Last Day = 31/12/2016
First Timestamp = 1451606400
Last Timestamp = 1483142400
当然,如果您想要一起运行它,那么这将生成您的时间戳,请注意使用()
$this_year_start = (new DateTime("first day of this year"))->getTimestamp();
$this_year_end = (new DateTime("last day of this year"))->getTimestamp();