标签: dateinterval

使用DateInterval和DateTime :: add添加月份时会出现什么问题?

我没能找到解决这个问题的正确方法.正如您在PHP文档中的示例#3中看到的那样,他们声明使用DateTime :: add中的DateInterval 添加月份时必须要注意.

对于为什么方法的行为是这样的,并且我可以做些什么来避免这种情况并没有任何解释,我发现这是一个错误.

有人对此有所了解吗?

php datetime dateinterval

4
推荐指数
1
解决办法
2995
查看次数

如何使用"每月第一个星期四"获得DatePeriod?

我有两个DateTime对象:

$start = new DateTime('first thursday of June 2012');
$end   = new DateTime('2012-12-31');
Run Code Online (Sandbox Code Playgroud)

我需要一个DatePeriod包含这两个日期之间的所有月份的所有第一个星期四.使用时

$interval = new DateInterval('P1M');
$period = new DatePeriod($start, $interval, $end);
Run Code Online (Sandbox Code Playgroud)

这仅仅增加1个月而不尊重"第一个星期四"的条件.

这样的事情也行不通:

$interval = DateInterval::createFromDateString('1 month first thursday');
$period = new DatePeriod($start, $interval, $end);
Run Code Online (Sandbox Code Playgroud)

有谁知道我怎么能做到这一点?

php datetime dateinterval

4
推荐指数
1
解决办法
1137
查看次数

DateTime/DateInterval每次刷新增加25小时会产生完全不同的结果

这是我的代码:

$timezone = new \DateTimeZone('America/New_York');
    $date1 = new \DateTime (date("Y:m:d H:i:s", time()), $timezone);
    $date1->add(new \DateInterval ("PT24H"));
    echo $date1->format('Y-m-d h:s:m');
Run Code Online (Sandbox Code Playgroud)

这应该增加24小时到当前时间.问题是,每次刷新页面时,我都会得到不同的结果.而且我并不是说像人们期望的那样仅仅几秒钟,我的意思是很多分钟.一些高于实际时间的一些低于它.

现在在9:51 pm三次刷新给出以下结果:2013-03-26 09:09:03,2013-03-26 09:17:03,2013-03-26 09:30:03

为什么我不能得到实时?到底是怎么回事?

谢谢您的帮助!

php datetime dateinterval

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

PHP 错误的 DateTime::diff() 返回错误的 DateInterval

我遇到两个日期时间相差的问题。这是显示 DateInterval 对象的命令行:

php -r "\$a = new Datetime('first day of 4 months ago midnight'); \$b = new Datetime('first day of 1 month ago midnight'); var_dump(\$a->diff(\$b));"
Run Code Online (Sandbox Code Playgroud)

这里是DateInterval输出:

class DateInterval#3 (15) {
  public $y =>      int(0)
  public $m =>      int(3)
  public $d =>      int(3)
  public $h =>      int(0)
  public $i =>      int(0)
  public $s =>      int(0)
  public $weekday =>               int(0)
  public $weekday_behavior =>      int(0)
  public $first_last_day_of =>     int(0)
  public $invert =>                int(0)
  public $days =>                  int(92)
  public $special_type => …
Run Code Online (Sandbox Code Playgroud)

php datetime dateinterval

4
推荐指数
1
解决办法
3853
查看次数

PHP中如何获取两个日期之间的月份差异

我想用 PHP 计算一个月中两个日期之间的差异,但似乎某个地方有一个错误。

$datetime1 = new DateTime(date('Y-m-d'));
$datetime2 = new DateTime(MyObject->getDate());
echo($datetime1->format('d/m/Y'));
echo($datetime2->format('d/m/Y));
Run Code Online (Sandbox Code Playgroud)

结果:

29/01/2016
27/01/2015

$dateInterval = $datetime1->diff($datetime2);
echo($dateInterval->format(%m months);
Run Code Online (Sandbox Code Playgroud)

结果:

0 months
Run Code Online (Sandbox Code Playgroud)

这是为什么?我究竟做错了什么 ?

php datetime dateinterval

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

MYSQL 添加工作日至今

我想在提供的日期上增加 5 天,但计算必须跳过周末。

我已经知道如何在不跳过周末的情况下添加 5 天:

SELECT DATE_ADD(`date_field`, INTERVAL 5 DAY) As FinalDate
FROM `table_name`;
Run Code Online (Sandbox Code Playgroud)

现在我希望返回值跳过周末。

目前如果date_field = 2016-07-22结果将是2016-07-27
但我希望结果是2016-07-29

mysql sql dateinterval

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

PHP DateInterval 创建瞬间(微秒或毫秒)间隔

如何在 PHP 中创建瞬间 DateInterval?例如:

0.123456秒

DateInterval::__construct的interval_spec

没有F也不f类似于支持分秒的DateInterval::format 。

DateInterval::createFromDateString相对格式列表也没有提及秒的任何分数。

DateInterval 类属性列表显示:

f 微秒数,以秒的一小部分形式表示。

我能够通过使用两个 DateTimes 的DateTime::diff瞬间获得 DateInterval

例子:

$formatStr = 'Y-m-d H:i:s.u';
$dateTimeStr = '2000-01-01 00:00:00.0';
$timeZone = new \DateTimeZone('UTC'); 
$timerDateTimeStart = \DateTimeImmutable::createFromFormat($formatStr, $dateTimeStr, $timeZone);

$formatStr = 'Y-m-d H:i:s.u';
$dateTimeStr = '2000-01-01 00:00:00.123456';
$timeZone = new \DateTimeZone('UTC');
$timerDateTimeEnd = \DateTimeImmutable::createFromFormat($formatStr, $dateTimeStr, $timeZone);

$timerDiff = $timerDateTimeStart->diff($timerDateTimeEnd);
$intervalStr = $timerDiff->format('%Y-%M-%D %H:%I:%S.%f');
echo 'Interval (yyyy-mm-dd hh:mm:ss.sfract): ' . $intervalStr; …
Run Code Online (Sandbox Code Playgroud)

php precision datetime intervals dateinterval

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

使用DateInterval计算两个日期之间的月份,而不是在一年内换行

我知道这个话题非常耗尽,但显然还不够!

$temp_d1 = new DateTime(date('Y-m-d', $fromTime)); // 2012-01-01
$temp_d2 = new DateTime(date('Y-m-d', $endTime)); // 2013-02-01
$interval = $temp_d2->diff($temp_d1); 
$monthsAhead = $interval->format('%m'); // returns 1, but I am expecting 13
Run Code Online (Sandbox Code Playgroud)

如何计算两个日期之间的月数,而不是在12个月内进行包装?

php datetime dateinterval

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

如何在php中设置DateInterval?

我有这个功能,可以为某些东西设置过期.该函数接受一些具有默认值的参数.我是这样做的:

public static function blockAccount(
    $id,
    $years = 0,
    $months = 0,
    $days = 0,
    $hours = 0,
    $minutes = 0,
    $seconds = 0
) {
    // Determine expiry date for the block
    $date = Text::getDateTime();
    $date->add(
        new \DateInterval(
            'P' . $years . 'Y'
            . $months . 'M'
            . $days . 'D'
            . $hours . 'H'
            . $minutes . 'I'
            . $seconds . 'S'
        )
    );
    $blockedExpiryDate = $date->format(Filter::FORMAT_MICRO_TIMESTAMP);

    $accountModel = AccountModel::selectById($id);
    $accountModel->setBlockedExpiryDate($blockedExpiryDate);
    $accountModel->save();
}
Run Code Online (Sandbox Code Playgroud)

当只用年份设置运行时,我收到一个错误,说:DateInterval::__construct(): Unknown or bad …

php date date-format dateinterval

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

当前星期一和当前星期五的 SSRS 表达式

我在 SSRS 中的报告上的文本框有以下表达式

="TR1's Sent Between "+Format(dateadd(DateInterval.Day,1-WeekDay(Today), Today), "dd/MM/yyyy")
Run Code Online (Sandbox Code Playgroud)

这将返回星期日日期而不是星期一。有谁知道如何显示当前星期一的日期和当前的星期五?如果你能解释每个部分,那么我理解格式会很棒

expression dateadd reporting-services dateinterval

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