Php DateTime(';4月1日';)返回的值与DateTime(';5月1日';)返回的值相同
April ant May返回php中的相同日期:Php DateTime(';4月1日';)返回的值与DateTime(';5月1日';)返回的值相同,php,datetime,Php,Datetime,April ant May返回php中的相同日期: var_dump(新日期时间(4月1日))-'2016-05-01 00:00:00' var_dump(新的日期时间(“5月1日”)-'2016-05-01 00:00:00' 在其他月份效果很好,但在4月份它返回05而不是04 编辑:“时区”=>“欧洲/巴黎” Edit2:如果您在印度标准时间使用此选项,请使用以下选项: public function indiantime() { $set_date_time = date_def
var_dump(新日期时间(4月1日))代码>-'2016-05-01 00:00:00'
var_dump(新的日期时间(“5月1日”)代码>-'2016-05-01 00:00:00'
在其他月份效果很好,但在4月份它返回05而不是04
编辑:“时区”=>“欧洲/巴黎”
Edit2:如果您在印度标准时间使用此选项,请使用以下选项:
public function indiantime() {
$set_date_time = date_default_timezone_set("Asia/Kolkata");
$get_time_zone = date_default_timezone_get();
$actualdatetime = new \DateTime();
return $actualdatetime;
}
这是一个非常奇怪的行为,但我找到了一些解决方案以获得预期的结果。这不起作用的原因是该对象缺少年份
解决方案#1()
解决方案#2()
解决方案#3()
thx至@Glavic
你把它作为印度标准时间检查吗?这很奇怪:-在PHP5.5.24-5.5.33,5.6.8-7.0.5上,它可以工作,但其他版本的日期是错误的。你能做同样的事情并告诉我:@Danield eddited我的第一篇文章用imgadding the year解决了问题:var_dump(新的DateTime('4月1日),新的DateTimeZone('Asia/Kolkata'));仍然返回05如果您设置了日期默认时区(“亚洲/加尔各答”)是的,仍然返回相同的。或者只使用4月1日
。
<?php
$datetime = new DateTime('2016-01-01', new DateTimeZone('Europe/Paris'));
var_dump($datetime->modify('first day of april'));
var_dump($datetime->modify('first day of may'));
?>
<?php
var_dump(new DateTime('first day of april 2016', new DateTimeZone('Europe/Paris')));
var_dump(new DateTime('first day of may 2016', new DateTimeZone('Europe/Paris')));
?>
<?php
var_dump(new DateTime('1 april', new DateTimeZone('Europe/Paris')));
var_dump(new DateTime('1st april', new DateTimeZone('Europe/Paris')));
var_dump(new DateTime('1 may', new DateTimeZone('Europe/Paris')));
var_dump(new DateTime('1st may', new DateTimeZone('Europe/Paris')));
?>