diff --git a/reference/datetime/dateinterval.xml b/reference/datetime/dateinterval.xml index a510687d0..f86437f4c 100644 --- a/reference/datetime/dateinterval.xml +++ b/reference/datetime/dateinterval.xml @@ -1,6 +1,6 @@ - + @@ -31,6 +31,20 @@ es calculando la diferencia entre dos objetos de fecha/hora a través de DateTimeInterface::diff. + + La forma en que se aplica la parte horaria de un intervalo, es decir horas, + minutos, segundos y microsegundos, cuando el intervalo se suma a un objeto + de fecha/hora o se resta de él, depende de cómo se haya creado el intervalo. + Para un intervalo creado con DateInterval::__construct + la parte horaria representa el tiempo transcurrido, mientras que para un + intervalo creado con DateInterval::createFromDateString, + o devuelto por DateTimeInterface::diff, incrementa o + decrementa los valores de cada componente. La parte de fecha, es decir años, + meses y días, siempre incrementa o decrementa los valores de cada componente. + Por lo tanto, ambos solo dan un resultado diferente cuando una transición de + zona horaria cae dentro de la parte horaria del intervalo; véase + Aritmética con DateTime. + Dado que no hay una forma bien definida de comparar intervalos de fechas, las instancias de DateInterval son @@ -106,12 +120,8 @@ &Methods; - - - - - - + + diff --git a/reference/datetime/dateinterval/createfromdatestring.xml b/reference/datetime/dateinterval/createfromdatestring.xml index eba221591..ed45d8a35 100644 --- a/reference/datetime/dateinterval/createfromdatestring.xml +++ b/reference/datetime/dateinterval/createfromdatestring.xml @@ -1,6 +1,6 @@ - + @@ -30,26 +30,24 @@ &reftitle.parameters; - - - - datetime - - - Una fecha con partes relativas. Específicamente, los - formatos relativos - admitidos por el analizador utilizados por DateTimeImmutable, - DateTime, y strtotime - serán los empleados para construir el objeto DateInterval - - - Para usar un string con formato ISO-8601 como P7D, debes - usar DateInterval::__construct. - - - - - + + + datetime + + + Una fecha con partes relativas. Específicamente, los + formatos relativos + admitidos por el analizador utilizados por DateTimeImmutable, + DateTime, y strtotime + serán los empleados para construir el objeto DateInterval + + + Para usar un string con formato ISO-8601 como P7D, se debe + usar DateInterval::__construct. + + + + @@ -112,13 +110,12 @@ &reftitle.examples; - - - Analizando intervalos de fechas válidos - + + Analizando intervalos de fechas válidos + - - - - - - Analizando combinaciones e intervalos negativos - + + + + + Los intervalos de un conjunto que tienen una parte horaria, como + P1DT12H y 1 day + 12 hours, no son + intercambiables cuando se suman a un objeto de fecha/hora y una transición + de zona horaria cae dentro de esa parte horaria: para un intervalo creado + con DateInterval::__construct la parte horaria + representa el tiempo transcurrido, mientras que para un intervalo creado + con este método incrementa o decrementa los valores de cada componente. + Véase Aritmética con DateTime. + + + + Analizando combinaciones e intervalos negativos + format('%d %h %i'), "\n"; $i = DateInterval::createFromDateString('1 year - 10 days'); echo $i->format('%y %d'), "\n"; ]]> - - &example.outputs; - + + &example.outputs; + - - - - - - Analizando intervalos de fechas relativas especiales - + + + + Analizando intervalos de fechas relativas especiales + - - &example.outputs.82; - + + &example.outputs.82; + - bool(true) - ["date_string"]=> - string(22) "last day of next month" + ["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" + ["from_string"]=> + bool(true) + ["date_string"]=> + string(12) "last weekday" } ]]> - - &example.outputs.8.similar; - + + &example.outputs.8.similar; + - 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) + ["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) + ["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) } ]]> - - - + + diff --git a/reference/datetime/datetimeimmutable/add.xml b/reference/datetime/datetimeimmutable/add.xml index 09e4edacc..f6991f21b 100644 --- a/reference/datetime/datetimeimmutable/add.xml +++ b/reference/datetime/datetimeimmutable/add.xml @@ -1,6 +1,6 @@ - + @@ -118,6 +118,7 @@ echo $newDate2->format('Y-m-d') . "\n"; DateTimeImmutable::sub DateTimeImmutable::diff DateTimeImmutable::modify + Aritmética con DateTime diff --git a/reference/datetime/datetimeimmutable/sub.xml b/reference/datetime/datetimeimmutable/sub.xml index cfa63a9fd..00f5bc8a5 100644 --- a/reference/datetime/datetimeimmutable/sub.xml +++ b/reference/datetime/datetimeimmutable/sub.xml @@ -1,6 +1,6 @@ - + @@ -156,6 +156,7 @@ echo $newDate2->format('Y-m-d') . "\n"; DateTimeImmutable::add DateTimeImmutable::diff DateTimeImmutable::modify + Aritmética con DateTime diff --git a/reference/datetime/examples.xml b/reference/datetime/examples.xml index 5234cdf92..e4696431d 100644 --- a/reference/datetime/examples.xml +++ b/reference/datetime/examples.xml @@ -1,6 +1,6 @@ - + &reftitle.examples; @@ -11,14 +11,13 @@ Los ejemplos siguientes muestran algunos problemas de la aritmética de DateTime en lo que respecta a las transiciones DST y los meses con diferente número de días. - - - DateTimeImmutable::add/sub añadir un intervalo de tiempo transcurrido - - Añadir PT24H más allá de una transición DST parecerá añadir 23/25 horas - (para la mayoría de los husos horarios). - - + + DateTimeImmutable::add/sub añadir un intervalo de tiempo transcurrido + + Añadir PT24H más allá de una transición DST parecerá añadir 23/25 horas + (para la mayoría de los husos horarios). + + format("Y-m-d H:i:s P"), PHP_EOL; $dt = $dt->add(new DateInterval("PT3H")); echo "Fin: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL; ]]> - - &example.outputs; - + + &example.outputs; + - - - - - - DateTimeImmutable::modify y strtotime incrementar o decrementar valores individuales - - Añadir +24 horas más allá de una transición DST puede añadir exactamente 24 - horas como se ve con la cadena fecha/hora - (excepto si la hora de inicio o fin está en un punto de transición). - - + + + + DateTimeImmutable::modify y strtotime incrementar o decrementar valores individuales + + Añadir +24 horas más allá de una transición DST puede añadir exactamente 24 + horas como se ve con la cadena fecha/hora + (excepto si la hora de inicio o fin está en un punto de transición). + + format("Y-m-d H:i:s P"), PHP_EOL; $dt = $dt->modify("+24 hours"); echo "Fin: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL; ]]> - - &example.outputs; - + + &example.outputs; + - - - - - - La adición o sustracción de fechas/horas puede exceder - (en más o en menos) fechas - - Como para 31 de Enero + 1 mes dará como resultado 2 de Marzo (año bisiesto) o - 3 de Marzo (año normal). - - + + + + DateInterval::createFromDateString crea intervalos que incrementan o decrementan los valores de los componentes + + DateInterval::createFromDateString utiliza el analizador + de fecha/hora, y la parte horaria del intervalo resultante incrementa o decrementa + los valores de cada componente. Para un intervalo creado con + DateInterval::__construct la parte horaria representa en + cambio el tiempo transcurrido, por lo que ambos no son intercambiables cuando una + transición de zona horaria cae dentro de esa parte horaria. La parte de fecha se + aplica de la misma manera en ambos casos, por lo que P1D y + 1 day siempre dan el mismo resultado. + + +format("Y-m-d H:i:s P"), PHP_EOL; +echo "PT24H: ", $dt->add(new DateInterval("PT24H"))->format("Y-m-d H:i:s P"), PHP_EOL; +echo "24 hours: ", $dt->add(DateInterval::createFromDateString("24 hours"))->format("Y-m-d H:i:s P"), PHP_EOL; +]]> + + &example.outputs; + + + + + + La adición o sustracción de fechas/horas puede exceder + (en más o en menos) fechas + + Como para 31 de Enero + 1 mes dará como resultado 2 de Marzo (año bisiesto) o + 3 de Marzo (año normal). + + format("Y-m-d H:i:s P"), PHP_EOL; $dt = $dt->modify("+1 month"); echo "Fin: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL; ]]> - - &example.outputs; - + + &example.outputs; + - - - Para obtener el último día del mes próximo (es decir, para prever el - excedente), el formato last day of está disponible. - - + + + Para obtener el último día del mes próximo (es decir, para prever el + excedente), el formato last day of está disponible. + + format("Y-m-d H:i:s P"), PHP_EOL; $dt = $dt->modify("last day of next month"); echo "Fin: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL; ]]> - - &example.outputs; - + + &example.outputs; + - - - + +