Last active
November 17, 2020 12:28
-
-
Save Leboubou111/462728d1a73c7f9525069499cc55d06a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
$event_start_date_formated = DateTime::createFromFormat('d/m/Y H:i', '18/11/2020 19:15'); | |
if ($event_start_date_formated->format('d/m/Y') == date('d/m/Y', strtotime('yesterday'))) { | |
$show_event_start_date = 'Demain à '.strftime("%kh%M", strtotime($event_start_date_formated->format('H:i'))); | |
<script type="text/javascript"> | |
console.log('Jour = 1'); | |
</script> | |
} else if ($event_start_date_formated->format('d/m/Y') == date('d/m/Y')) { | |
$dif_time = strtotime($event_start_date_formated->format('d/m/Y H:i')) - strtotime(date('d/m/Y H:i')); | |
$time_to_show = $event_start_date_formated->format('d/m/Y H:i'); | |
if (date('H', ($dif_time - 3600)) > '0') { | |
<script type="text/javascript"> | |
console.log('Jour = 0 et Heure < 1'); | |
</script> | |
} else { | |
if (date('i', ($dif_time - 3600)) < '16') { | |
<script type="text/javascript"> | |
console.log('Jour = 0 et Heure < 1 et minutes < 16'); | |
</script> | |
} | |
<script type="text/javascript"> | |
console.log('Jour = 0 et Heure >= 1'); | |
</script> | |
} | |
} else { | |
$show_event_start_date = strftime("%a %e %b %kh%M", strtotime($event_start_date_formated->format('Y/m/d H:i'))); | |
<script type="text/javascript"> | |
console.log('Jour > 1'); | |
</script> | |
} | |
?> |
Un truc dans le genre ?
// Init
$event_start_date_formated = DateTime::createFromFormat( 'd/m/Y H:i', '18/11/2020 19:15' );
$now = new DateTime();
$date_diff = $event_start_date_formated->diff($now);
// In 1 day
if ( $date_diff->d == 1 ) {
$show_event_start_date = 'Demain à ' . strftime( "%kh%M", strtotime( $event_start_date_formated->format( 'H:i' ) ) );
}
// Same day
else if ( $date_diff->d == 0 ) {
//
$time_to_show = $event_start_date_formated->format( 'd/m/Y H:i' );
if ( $date_diff->h < 1 ) {
$show_event_start_date = "Moins d\'une heure !";
} else {
if ( $date_diff->h < 16 ) {
$show_event_start_date = "Moins de 16 heures !";
}
}
}
// More than 1 day
else {
$show_event_start_date = strftime( "%a %e %b %kh%M", strtotime( $event_start_date_formated->format( 'Y/m/d H:i' ) ) );
}
Mon problème venait de 2 choses :
Au lieu d'utiliser la fonction strtotime pour récupérer le timestamp de l'objet DateTime je peux le récupérer directement depuis l'objet avec ->getTimestamp()
Ensuite, lorsque je fais un strtotime sur une date, je n'utilise pas le format ISO 8601 (YYYY-MM-DD).
J'ai donc modifié, et c'est bon, ceci dit, ta méthode avec le ->diff est bien mieux, je vais donc l'utiliser ;-)
On reconnait ceux qui en font toute la journée :)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
J'ai fixé 18/11/2020 19:15 dans l'objet DateTime, mais je vais le chercher sur une option de 'Options framework'
Mais : $dif_time me sort 0 et $time_to_show vide