DateInterval格式中的“ P”代表什么?


82

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

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

“ D”代表数天,“ P”在该格式中代表什么?

Answers:


122

手册

间隔规范。

格式以字母P开头,代表“句号”。每个持续时间段由一个整数值表示,后跟一个周期标志符。如果持续时间包含时间元素,则在规范的该部分之前加上字母T。


24

“ P”代表期间。看到这里http://php.net/manual/en/dateinterval.construct.php


10
太疯狂了,使用了很多示例,P但是这种引用被低估了。我猜这意味着期间,我正在寻找php.net的那个词,我明明从来没有构造页面。但它不是引用date_formatDateTime::diffDateTime::formatDateInterval,和一般的主机Date/Time功能。我想知道是否还有其他前缀需要知道,如果我能找到它直到我来参加堆栈交换时
该死-Madivad

9

我认为可以更详细地回答。首先,DateInterval构造函数方法采用一个名为$interval_specstring的参数。

DateInterval::__construct ( string $interval_spec )

该参数的规格如下所述:

格式以字母P开头,为句点。每个持续时间段由一个整数值表示,后跟一个周期标志符。如果持续时间包含时间元素,则在规范的该部分之前加上字母T。

参数中使用了一些句号指示符:

  • Ÿ
  • 中号
  • ð
  • W。这些将转换为天,因此不能与D结合使用。
  • ^ h小时
  • 中号
  • 小号

我们来看一些使用“期间指示符”的示例:

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

有一个需要按照文档描述进行维护的命令:

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

该规范也可以表示为datetime

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

但是此格式的值不能超过给定时间段的转折点(例如25小时无效)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.