相关疑难解决方法(0)

如何从今天起减去4个月?

我需要以"Ymd"格式声明两个日期:$toDate$fromDate.

$toDate代表今天的日期,$fromDate需要比今天早4个月.

$toDate = Date('Ymd');
$fromDate = ?
Run Code Online (Sandbox Code Playgroud)

我该如何创作$fromDate

php date subtraction intervals

23
推荐指数
2
解决办法
5万
查看次数

如何在没有跳过的日期添加1个月即2月

可能重复:
PHP DateTime ::修改添加和减去月份

我有一个开始日期(即2011-01-30),并希望增加1个月.

问题在于定义一个月是什么.所以,如果我使用以下代码:

$d1 = DateTime::createFromFormat('Y-m-d H:i:s', '2011-01-30 15:57:57');
$d1->add(new DateInterval('P1M'));
echo $d1->format('Y-m-d H:i:s');
Run Code Online (Sandbox Code Playgroud)

我得到以下结果:2011-03-02 15:57:57

问题是,我需要它使用以下规则:

  • 如果我加1个月它只会在月份部分添加1并留下一天部分(2011-01-15将成为2011-02-15)
  • 如果当天不存在我们将结束的那天,我们将采取最后一天(2011-01-30将成为2011-02-28)

在PHP中有一个常见的功能可以做到这一点,还是我必须自己编写代码?也许我只是缺少一个参数或什么!?

php datetime

20
推荐指数
2
解决办法
4万
查看次数

PHP从日期格式中减去1个月('m-Y')

我想从约会中减去1个月.

$today = date('m-Y');
Run Code Online (Sandbox Code Playgroud)

这给出了:08-2016

我怎样才能减去一个月才能得到07-2016

php date subtraction

20
推荐指数
4
解决办法
4万
查看次数

PHP strtotime +1个月的行为

我知道PHP函数的不良行为

的strtotime

例如,将日期(+1个月)添加到日期,例如:31.01.2011 - > 03.03.2011

知道这不是正式的PHP错误,并且这个解决方案背后有一些论据,但至少对我来说,这种行为造成了很多浪费时间(在过去和现在),我个人讨厌它.


我发现甚至更奇怪的是,例如:

MySQL: DATE_ADD('2011-01-31',INTERVAL 1 MONTH)返回2011-02-28或

C# where new DateTime(2011,01,31).AddMonths(1); 将于28.02.2011返回

wolframalpha.com给予31.01.2013 + 1 month作为输入; 将于2013年2月28日星期四返回

它向我看到其他人已经找到了一个更好的解决方案,我在PHP错误报告中看到了很多愚蠢的问题,"如果我说我们会在一个月后见面会是什么日子"或类似的东西.答案是:如果下个月不存在31,请告诉我那个月的最后一天,但请坚持下个月.


所以我的问题是:是否有一个PHP函数(由某人编写)解决了这个没有官方认可的错误?因为我不认为我是唯一一个在添加/减去月份时想要另一种行为的人.

我特别感兴趣的是解决方案,它不仅适用于本月底,而且完全取代了strtotime.此外,strotime +n months还应处理此案.

快乐的编码!

php strtotime

18
推荐指数
3
解决办法
9375
查看次数

当前日期+ 2个月

我写了这段代码,以显示当前日期+ 2个月:

<?php
    $date = date("d/m/Y");
    $date = strtotime(date("d/m/Y", strtotime($date)) . "+2 months");
    $date = date("d/m/Y",$date);
    echo $date;
?>
Run Code Online (Sandbox Code Playgroud)

它似乎不起作用,因为它显示:01/03/1970.

我究竟做错了什么?

谢谢你的帮助.

编辑:

在阅读了评论和答案之后,我对其进行了简化和纠正.

<?php
    $date = date("d/m/Y", strtotime(" +2 months"));
    echo $date;
?>
Run Code Online (Sandbox Code Playgroud)

php date strtotime

15
推荐指数
2
解决办法
6万
查看次数

在PHP 5.1中添加月份的准确方法?

昨天我遇到了PHP的strtotime问题没有正确添加一个月.在'2011-05-31'我跑了:

date('Y-m-d',strtotime( '+1 month', strtotime('now')));
Run Code Online (Sandbox Code Playgroud)

当我期待'2011-06-30'时,返回'2011-07-01'.

MySQL没有任何问题.

我宁愿不用这个重新发明轮子,因为根据我的经验,用日期计算很容易犯错误.

有没有人为PHP 5.1提供可靠且经过测试的解决方案?

php strtotime

7
推荐指数
1
解决办法
4518
查看次数

PHP二月日期:"2015-01-31"+1月:"2015-03-30".怎么修?

如果我使用这段代码,我会得到奇怪的结果:

$datetime = new DateTime('2015-01-31');
$datetime->modify('+1 month');
echo $datetime->format('Y-m-t') . "<br>";
$datetime->modify('+1 month');
echo $datetime->format('Y-m-t') . "<br>";
$datetime->modify('+1 month');
echo $datetime->format('Y-m-t') . "<br>";
Run Code Online (Sandbox Code Playgroud)

我明白了:

2015-03-31
2015-04-30
2015-05-31
Run Code Online (Sandbox Code Playgroud)

而不是2015-02-28.

怎么修?

php datetime date

6
推荐指数
1
解决办法
3759
查看次数

无法理解PHP中DateTime类的行为

我在Kubuntu 14.04中使用LAMP,PHP 5.6.23.

在以下情况下使用DateTime时:

1.

print_r((new DateTime('2016-02-31'))->format('M/d/Y')); 
// Mar/02/2016 (no errors, why?)
Run Code Online (Sandbox Code Playgroud)

2.

print_r((new DateTime('2016-02-32'))->format('M/d/Y')); 
// Error - DateTime::__construct(): Failed to parse time string-
// (2016-02-32) at position 9 (2): Unexpected character
Run Code Online (Sandbox Code Playgroud)

为什么第一个案例没有给我错误,因为没有第二个月的第31个月?

要求提供支持答复的参考文​​献

php datetime

5
推荐指数
1
解决办法
43
查看次数

用PHP添加2个月

我已经看到以前在现有日期增加两个月的问题,但现有的答案对我没有多大帮助,因为我得到的结果与我想要的不同.我已经设置了如下日期:

$date = "2014-12-31";
$date = date('Y-m-d', strtotime("$date +2 month"));
Run Code Online (Sandbox Code Playgroud)

在我添加2个月后,我将其打印出来:

echo $date;
Run Code Online (Sandbox Code Playgroud)

我的结果:

2015年3月3日

但这对我来说是不对的,因为这是我想要的整整一个月:

2015年2月28日

我怎样才能做到这一点?

php date

3
推荐指数
1
解决办法
1118
查看次数

DateTime“上个月的第一天”不返回第一天

我已经看过这个答案了,它与我所拥有的非常接近。

这是我的PHP代码:

$start = new DateTime('0:00 first day of previous month', new DateTimeZone('UTC'));
/*
if (isset($_GET['year']) && isset($_GET['month']) && checkdate($_GET['month'], 1, $_GET['year'])) {
    $start = DateTime::createFromFormat('Y-m-d', $_GET['year'] . '-' . $_GET['month'] . '-1');
}*/
$middle = DateTime::createFromFormat('U', strtotime('first day of last month', $start->format('U')));
$middle->setTimezone(new DateTimeZone('UTC'));
$end = DateTime::createFromFormat('U', strtotime('first day of 2 months ago', $start->format('U')));
$end->setTimezone(new DateTimeZone('UTC'));

var_dump($start);
var_dump($middle);
var_dump($end);
Run Code Online (Sandbox Code Playgroud)

今天是 8 月 27 日,所以我预计是 7 月 1 日、6 月 1 日和 5 月 1 日。以下是实际输出:

object(DateTime)[1]
  public …
Run Code Online (Sandbox Code Playgroud)

php datetime datediff

2
推荐指数
1
解决办法
1万
查看次数

标签 统计

php ×10

date ×5

datetime ×4

strtotime ×3

subtraction ×2

datediff ×1

intervals ×1