'P'代表DateInterval格式是什么意思?

Shr*_*ath 71 php php-5.3

考虑以下来自日期时间的PHP手册引用的示例

<?php
  $date = new DateTime('2000-01-20');
  $date->sub(new DateInterval('P10D'));
  echo $date->format('Y-m-d') . "\n";
?>
Run Code Online (Sandbox Code Playgroud)

'D'是几天,'P'在格式中代表什么?

Phi*_*hil 108

手册

区间规范.

格式以字母P开头,表示"期间".每个持续时间段由整数值表示,后跟句点指示符.如果持续时间包含时间元素,则说明书的该部分前面带有字母T.


Jav*_*ava 20

'P'代表Period.请看这里http://php.net/manual/en/dateinterval.construct.php

  • 这很疯狂,所以很多例子都使用`P`,但这个引用是如此低调.我猜这意味着期间我正在搜索`php.net`这个词,我显然从来没有进入构造函数页面..但它没有引用`date_format`,`DateTime :: diff`,`DateTime :: format` ,`DateInterval`,以及一系列通用的`Date/Time`函数.我想知道是否有任何其他的前缀需要知道并且如果我能找到它就会被诅咒直到我来堆叠交换 (8认同)

unc*_*exo 10

我认为可以更详细地回答。首先,DateInterval构造函数方法接受一个名为$interval_spec字符串的参数。

DateInterval::__construct ( string $interval_spec )
Run Code Online (Sandbox Code Playgroud)

该参数的规格如下:

格式以字母 P 开头,表示句点。每个持续时间段由一个整数值表示,后跟一个时间段指示符。如果持续时间包含时间元素,则规范的该部分前面有字母 T。

参数中使用了一些句号:

  • Ÿ
  • 中号
  • ð
  • W。这些被转换成天,所以不能与 D 结合。
  • ^ h小时
  • 中号
  • 小号

让我们看一些使用句号指示符的示例:

  • 两天是P2D。
  • 两秒是PT2S。
  • 六年零五分钟是P6YT5M。

有一个订单需要按照文档中的描述进行维护:

单位类型必须从左侧的最大比例单位到右侧的最小比例单位输入。所以几年前几个月,几个月前几天,几天前几分钟,等等。因此一年零四天必须表示为 P1Y4D,而不是 P4D1Y。

该规范也可以表示为 datetime

  • 一年两个月四天就是P0001-02-04T00:00:00

但是这种格式的值不能超过给定时间段的滚动点(例如 25 小时无效)。