SymfonyWorld Online 2022 Winter Edition

DateInterval::createFromDateString

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

DateInterval::createFromDateStringDizgenin göreli kısımlarından bir DateInterval nesnesi döndürür

Açıklama

public static DateInterval::createFromDateString(string $datetime): DateInterval|false

Normal tarih ayrıştırcısı kullanır ve dizgenin göreli kısımlarından bir DateInterval nesnesi oluşturur.

Değiştirgeler

datetime

Göreli gösterimle tarih. DateInterval'i oluşturmak için özellikle, DateTimeImmutable,strtotime() ve DateTime için kullanılan ayrıştırıcı tarafından desteklenen göreli gösterimler kullanılır.

Dönen Değerler

Başarılıysa yeni bir DateInterval nesnesi döndürür, başarısızlık durumunda false döner.

Sürüm Bilgisi

Sürüm: Açıklama
8.2.0 DateInterval bu yöntem ile oluşturulduğunda yalnızca from_string ve date_string özellikleri görünür olur.

Örnekler

Örnek 1 - Geçerli tarih aralıklarının çözümlenmesi

<?php
// Aralıklar her birinde eşittir.
$i = new DateInterval('P1D');
$i DateInterval::createFromDateString('1 day');

$i = new DateInterval('P2W');
$i DateInterval::createFromDateString('2 weeks');

$i = new DateInterval('P3M');
$i DateInterval::createFromDateString('3 months');

$i = new DateInterval('P4Y');
$i DateInterval::createFromDateString('4 years');

$i = new DateInterval('P1Y1D');
$i DateInterval::createFromDateString('1 year + 1 day');

$i = new DateInterval('P1DT12H');
$i DateInterval::createFromDateString('1 day + 12 hours');

$i = new DateInterval('PT3600S');
$i DateInterval::createFromDateString('3600 seconds');
?>

Örnek 2 - Özel göreli tarih aralıklarının çözümlenmesi

<?php
//gelecek ayın son günü
$i DateInterval::createFromDateString('last day of next month');
var_dump($i);

// haftanın son günü
$i DateInterval::createFromDateString('last weekday');
var_dump($i);

Yukarıdaki örneğin PHP 8.2 çıktısı:

object(DateInterval)#1 (2) {
  ["from_string"]=>
  bool(true)
  ["date_string"]=>
  string(22) "last day of next month"
}
object(DateInterval)#2 (2) {
  ["from_string"]=>
  bool(true)
  ["date_string"]=>
  string(12) "last weekday"
}

Yukarıdaki örneğin PHP 8.0 çıktısı şuna benzer:

object(DateInterval)#1 (16) {
  ["y"]=>
  int(0)
  ["m"]=>
  int(1)
  ["d"]=>
  int(0)
  ["h"]=>
  int(0)
  ["i"]=>
  int(0)
  ["s"]=>
  int(0)
  ["f"]=>
  float(0)
  ["weekday"]=>
  int(0)
  ["weekday_behavior"]=>
  int(0)
  ["first_last_day_of"]=>
  int(2)
  ["invert"]=>
  int(0)
  ["days"]=>
  bool(false)
  ["special_type"]=>
  int(0)
  ["special_amount"]=>
  int(0)
  ["have_weekday_relative"]=>
  int(0)
  ["have_special_relative"]=>
  int(0)
}
object(DateInterval)#2 (16) {
  ["y"]=>
  int(0)
  ["m"]=>
  int(0)
  ["d"]=>
  int(0)
  ["h"]=>
  int(0)
  ["i"]=>
  int(0)
  ["s"]=>
  int(0)
  ["f"]=>
  float(0)
  ["weekday"]=>
  int(0)
  ["weekday_behavior"]=>
  int(0)
  ["first_last_day_of"]=>
  int(0)
  ["invert"]=>
  int(0)
  ["days"]=>
  bool(false)
  ["special_type"]=>
  int(1)
  ["special_amount"]=>
  int(-1)
  ["have_weekday_relative"]=>
  int(0)
  ["have_special_relative"]=>
  int(1)
}

add a note

User Contributed Notes 3 notes

up
2
Anonymous
12 years ago
DateInterval::createFromDateString ( string $time )

When the manual says "Uses the normal date parsers" it means that this function cannot take $time = ISO8601 strings like "P7D".  If you want to use those, you must use the constructor.
up
0
BobRay
1 month ago
Weeks are always converted to days and added to any days specified. As far as I can tell, this is the only calculation done by the method. Somewhat surprisingly, this works (though obviously  it would be a poor coding practice):

$di = DateInterval::createFromDateString('62 weeks + 1 day + 2 weeks + 2 hours + 70 minutes');
  /* Stored as 0 years, 449 days, 2 hours, 70 minutes */
up
0
BobRay
1 month ago
Unlike the DateInterval constructor, this method will accept negative values, so this works:

      $di = DateInterval::createFromDateString('1 year - 10 days');
           /* Stored as 1 year, -10 days */
To Top