DateInterval biçiminde 'P' ne anlama geliyor?


83

DateTime için php kılavuzundan alıntılanan aşağıdaki örneği düşünün

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

'D' günlerce, bu biçimlendirmede 'P' ne anlama geliyor?

Yanıtlar:


123

Gönderen kılavuzda

Aralık belirtimi.

Biçim, "nokta" için P harfiyle başlar. Her bir süre periyodu bir tamsayı değeri ve ardından bir periyot göstericisi ile temsil edilir. Süre, zaman unsurları içeriyorsa, spesifikasyonun bu kısmından önce T harfi gelir.


24

'P', Dönem anlamına gelir. buraya bakın http://php.net/manual/en/dateinterval.construct.php


11
Bu çılgınca, pek çok örnek kullanıyor Pama bu referans çok abartılı değil. Ben dilimi kastedilmektedir tahmin ve ben arıyordum php.neto kelime için ben açıkçası yapıcı sayfasına asla .. Ama üzerinde başvurulan değil date_format, DateTime::diff, DateTime::format, DateIntervalgeneral ve bir dizi Date/Timefonksiyonları. Bilmem gereken başka önekler olup olmadığını bilmek ve yığın değişimine
gelene

9

Daha detaylı olarak cevaplanabileceğini düşünüyorum. Her şeyden önce, DateIntervalyapıcı yöntemi $interval_specstring olan bir parametre alır .

DateInterval::__construct ( string $interval_spec )

Bu parametrenin aşağıda açıklanan bir özelliği vardır:

Biçim, nokta için P harfiyle başlar. Her bir süre periyodu bir tamsayı değeri ve ardından bir periyot göstericisi ile temsil edilir. Süre, zaman öğeleri içeriyorsa, spesifikasyonun bu kısmından önce T harfi gelir.

Argümanda kullanılan bazı Dönem İşaretçileri vardır:

  • Y için yıllar
  • M için aylar
  • D için gün
  • W için hafta . Bunlar günlere dönüştürülür, bu nedenle D ile birleştirilemez.
  • H için sonrası
  • Dakika için M
  • Saniyeler için S

Periyot İşaretleyicileri kullanarak bir örnek görelim:

  • İki gün P2D'dir.
  • İki saniye PT2S'dir.
  • Altı yıl beş dakika P6YT5M'dir.

Belgede açıklandığı gibi sürdürülmesi gereken bir sipariş var:

Birim türleri soldaki en büyük ölçek biriminden sağdaki en küçük ölçek birimine girilmelidir. Yani aylardan yıllar, günlerden aylar, dakikalardan önceki günler vb. Dolayısıyla, bir yıl ve dört gün P4D1Y değil, P1Y4D olarak temsil edilmelidir.

Spesifikasyon aynı zamanda bir tarih-saat olarak da temsil edilebilir .

  • Bir yıl, iki ay, dört gün P0001-02-04T00: 00: 00 olacaktır

Ancak bu formattaki değerler, belirli bir dönemin devir noktasını aşamaz (örneğin, 25 saat geçersizdir).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.