Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php DateTime(';4月1日';)返回的值与DateTime(';5月1日';)返回的值相同_Php_Datetime - Fatal编程技术网

Php DateTime(';4月1日';)返回的值与DateTime(';5月1日';)返回的值相同

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

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_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')));
?>