'P' viết tắt của định dạng DateInterval là gì?


82

Hãy xem xét ví dụ sau được trích dẫn từ hướng dẫn sử dụng php cho DateTime

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

'D' là ngày, chữ 'P' có nghĩa là gì trong định dạng đó?

Câu trả lời:


122

Từ sách hướng dẫn

Đặc điểm kỹ thuật khoảng thời gian.

Định dạng bắt đầu bằng chữ P, cho "dấu chấm". Mỗi khoảng thời gian được biểu thị bằng một giá trị số nguyên, theo sau là một ký hiệu khoảng thời gian. Nếu thời lượng chứa các yếu tố thời gian, thì phần đó của thông số kỹ thuật được đặt trước bằng chữ T.


24

'P' là viết tắt của Kỳ. xem tại đây http://php.net/manual/en/dateinterval.construct.php


10
Điều đó thật điên rồ, rất nhiều ví dụ sử dụng Pnhưng tài liệu tham khảo đó quá thấp. Tôi đoán nó có nghĩa là thời gian và tôi đã tìm kiếm php.netcho từ đó, tôi không bao giờ rõ ràng đã đến trang constructor .. Nhưng nó không được giới thiệu trên date_format, DateTime::diff, DateTime::format, DateInterval, và một loạt các chung Date/Timechức năng. Tôi muốn biết nếu có bất kỳ tiền tố khác để biết về và bị nguyền rủa nếu tôi có thể tìm thấy nó cho đến khi tôi đến ngăn xếp trao đổi
Madivad

9

Tôi nghĩ rằng nó có thể được trả lời chi tiết hơn. Trước hết, DateIntervalphương thức khởi tạo nhận một tham số có tên$interval_spec là chuỗi.

DateInterval::__construct ( string $interval_spec )

Tham số này có đặc điểm kỹ thuật được mô tả như bên dưới:

Định dạng bắt đầu bằng chữ P, cho dấu chấm. Mỗi khoảng thời gian được biểu thị bằng một giá trị số nguyên, theo sau là một ký hiệu khoảng thời gian. Nếu thời lượng chứa các yếu tố thời gian, thì phần đó của thông số kỹ thuật được đặt trước bằng chữ T.

Có một số Chỉ định thời kỳ được sử dụng trong đối số:

  • Y trong nhiều năm
  • M trong nhiều tháng
  • D trong nhiều ngày
  • W trong nhiều tuần . Chúng được chuyển đổi thành ngày, vì vậy không thể kết hợp với D.
  • H trong nhiều giờ
  • M trong vài phút
  • S trong giây

Hãy xem một số ví dụ bằng cách sử dụng Dấu chấm:

  • Hai ngày là P2D.
  • Hai giây là PT2S.
  • Sáu năm năm phút là P6YT5M.

Có một thứ tự cần được duy trì như được mô tả trong tài liệu:

Các loại đơn vị phải được nhập từ đơn vị tỷ lệ lớn nhất ở bên trái đến đơn vị tỷ lệ nhỏ nhất ở bên phải. Vì vậy, năm trước tháng, tháng trước ngày, ngày trước phút, v.v. Vì vậy, một năm và bốn ngày phải được biểu thị là P1Y4D, không phải P4D1Y.

Đặc điểm kỹ thuật cũng có thể được biểu diễn dưới dạng ngày giờ .

  • Một năm, hai tháng, bốn ngày sẽ là P0001-02-04T00: 00: 00

Nhưng các giá trị ở định dạng này không được vượt quá điểm cuộn của một khoảng thời gian nhất định (ví dụ: 25 giờ không hợp lệ).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.