$fecha + 1 año?

3 minutos de lectura

avatar de usuario
Mate

Estoy tratando de obtener una fecha que sea un año a partir de la fecha que especifique.

Mi código se ve así:

$futureDate=date('Y-m-d', strtotime('+one year', $startDate));

Está devolviendo la fecha incorrecta. ¿Alguna idea de por qué?

  • Se olvidó de informar sobre el error.

    – BalusC

    15 de diciembre de 2009 a las 3:49

  • Frank Farmer: ¿estás tan seguro? Preferiría esperar las rectificaciones/comentarios de OP.

    – BalusC

    15 de diciembre de 2009 a las 4:12

  • En mi prisa por publicar esto anoche, olvidé aclarar: estaba devolviendo la fecha incorrecta. ¡Lo siento! Gracias por tu ayuda.

    – Mate

    15 de diciembre de 2009 a las 16:05

  • Úselo así en su lugar strtotime(‘+1 año’, $startDate));

    – casivaagustin

    14 de julio de 2015 a las 14:49

avatar de usuario
Misho

$futureDate=date('Y-m-d', strtotime('+1 year'));

¡$futureDate es dentro de un año!

$futureDate=date('Y-m-d', strtotime('+1 year', strtotime($startDate)) );

¡$futureDate es un año desde $startDate!

  • Tenga en cuenta que si $startDate ya es una marca de tiempo (como una creada anteriormente con la función time() o mktime()) y no una cadena, no debe incluirla en strtotime o no funcionará. En cambio, haz $futureDate=date('Y-m-d',strtotime('+1 year',$startDate)); como K Prime mencionado a continuación.

    – dallin

    4 de septiembre de 2018 a las 4:11


avatar de usuario
nidhin bebe

Para agregar un año a la fecha de hoy, use lo siguiente:

$oneYearOn = date('Y-m-d',strtotime(date("Y-m-d", mktime()) . " + 365 day"));

Para los otros ejemplos, debe inicializar $StartingDate con un valor de marca de tiempo, por ejemplo:

$StartingDate = mktime();  // todays date as a timestamp

Prueba esto

$newEndingDate = date("Y-m-d", strtotime(date("Y-m-d", strtotime($StaringDate)) . " + 365 day"));

o

$newEndingDate = date("Y-m-d", strtotime(date("Y-m-d", strtotime($StaringDate)) . " + 1 year"));

  • Agregar “+365” en lugar de “+1 año” lo hizo. ¡Gracias!

    – Mate

    15 de diciembre de 2009 a las 16:01

  • ¿No se rompería esto en caso de año bisiesto?

    – WhoaItsAFactorial

    25 de enero de 2013 a las 15:46

  • A partir de PHP 5.1, cuando se llama sin argumentos, mktime() arroja un aviso E_STRICT: use la función time() en su lugar.

    – svandragt

    29 de enero de 2014 a las 13:54

  • Downvoted aquí también. El número de segundos en un día, días en un año, segundos en un año, etc. son todos variables. Si está interesado en ‘dentro de un año’, debe pasar en un intervalo de ‘un año’. Subdividir por su cuenta es lo que conduce a errores en torno a los días bisiestos, los segundos bisiestos y los cambios de horario de verano. Peor aún, provoca pruebas unitarias de flappy.

    – droberto

    15/08/2014 a las 18:10


  • ¿Por qué mi respuesta está negativa? $añadidounaño=fecha(“y”)+1; // para agregar un año, ¿qué tiene de malo?

    – pate.kiran

    11 de mayo de 2015 a las 9:47


//1 year from today's date
echo date('d-m-Y', strtotime('+1 year'));

//1 year from from specific date
echo date('22-09-Y', strtotime('+1 year'));

Espero que este código más simple ayude a alguien en el futuro 🙂

Probar: $futureDate=date('Y-m-d',strtotime('+1 year',$startDate));

avatar de usuario
jardinero

acabo de tener el mismo problema, sin embargo, esta fue la solución más simple:

<?php (date('Y')+1).date('-m-d'); ?>

  • Genial, lo uso para obtener el próximo año: $next_year = (date('Y')+1).

    – Martín

    14 oct 2017 a las 16:09

avatar de usuario
anarquíafuera de la ley

// Declare a variable for this year 
$this_year = date("Y");
// Add 1 to the variable
$next_year = $this_year + 1;
$year_after = $this_year + 2;

// Check your code
    echo "This year is ";
    echo $this_year;
    echo "<br />";
    echo "Next year is ";
    echo $next_year;
    echo "<br />";
    echo "The year after that is ";
    echo $year_after;

  • Genial, lo uso para obtener el próximo año: $next_year = (date('Y')+1).

    – Martín

    14 oct 2017 a las 16:09

Prefiero el enfoque OO:

$date = new \DateTimeImmutable('today'); //'today' gives midnight, leave blank for current time.
$futureDate = $date->add(\DateInterval::createFromDateString('+1 Year'))

Usar DateTimeImmutable de lo contrario, también modificará la fecha original. más sobre DateTimeImmutable: http://php.net/manual/en/class.datetimeimmutable.php


Si solo desea a partir de la fecha de hoy, siempre puede hacer:

new \DateTimeImmutable('-1 Month');

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad