Tengo la siguiente función que funciona bien, pero me gustaría verificar la fecha devuelta y compararla con la fecha actual si es anterior a la fecha actual para mostrar algo si es actual o en el futuro se muestra como normal.
Función:
function dateFormat( $old, $correction ) { $old_date_timestamp = strtotime( $old ); $new_date = date( 'jS F Y', $old_date_timestamp + $correction ); return $new_date; }Llamar:
echo '<li class="list-group-item">Support Expires: ' . dateFormat($purchase_data['verify-purchase']['supported_until'], 11*60*60 . '</li>');Producción:
2 de marzo de 2016
Entonces, como no es la fecha de hoy y / o antes de la fecha de hoy, le gustaría hacer eco de un mensaje, de lo contrario, solo muestre la fecha.
En PHP es muy simple comparar dos fechas diferentes usando < = > como normalmente comparas números. El único paso previo a esto es el siguiente:
//Tell PHP that the value in variable is a date value $date_1 = date_create("2017-05-29"); //This value can be any valid date format date_1_formatted = date_format($date_1, "Ymd"); //This formats the date_1 //Now you can simply put the second date, for example, today. $date_2 = date_create("2017-04-29"); //This value can be any valid date format date_2_formatted = date_format($date_2, "Ymd"); //This formats the date_1 //For current date, it is simpler $date_today_formatted = date("Ymd"); //Now you can compare these two dates easily if ($date_1 < $date_today_formatted) { echo "Date 1 falls before today."; } else { echo "Date 1 falls after today."; }¡Espero que esto ayude!
Logré resolverlo usando las siguientes 2 funciones:
function dateFormat( $old, $correction ) { $old_date_timestamp = strtotime( $old ); $new_date = date( 'jS F Y', $old_date_timestamp + $correction ); return $new_date; } function checkLicenceSupport($licence_date) { $date_now = new dateTime(); $date_set = dateFormat($licence_date, 11*60*60); if ($date_now > $date_set) { return 'date expired'; } else { return 'date valied'; } }Tengo la siguiente función que funciona bien, pero me gustaría verificar la fecha de devolución y compararla con la fecha actual.
Si es anterior a la fecha actual, muestra algo.
Si es la fecha actual, o en el futuro, mostrar como normal.
Necesitaba reescribir tu pregunta, porque la falta de gramática y puntuación la hacía confusa. Sin intención de ofender.
Su código de llamada tiene el paréntesis de cierre porque su llamada de función está mal colocada.
dateFormat($purchase_data['verify-purchase']['supported_until'], 11*60*60)
Es más legible usar días completos u horas (en segundos):
11*86400 //(11 Días);
11*3600 //(11 Horas);
La función y el código, tal como los tiene ahora, siempre devolverán una fecha en el futuro de la fecha que envió a través de la llamada. (No puedo decir por su pregunta si esto fue intencionado o no).
Actualmente, no hay "comparación" en su función. Pero su pregunta indica que desea comparar la fecha de envío con la fecha actual y luego hacer algo en ciertos casos.
Si va a utilizar una marca de tiempo de Unix, entonces no hay necesidad de formato múltiple, compare las dos fechas en Unix y luego formatee el resultado.
function dateCompare($submittedDate){ //This is only needed if your submitted date is not a unix timestamp already $submittedDate = strtotime($submittedDate); $currentDate = time(); // Creates timestamp of current datetime if($submittedDate < $currentDate) { //show something ie return "Support Has Expired"; }else { return date('jS F Y', $submittedDate); } } echo '<li class="list-group-item">Support Expires: '.dateCompare($purchase_data['verify-purchase']['supported_until']).'</li>';