Déterminez l'intervalle maximum de décalage horaire : implémentation PHP en minutes, heures, jours, semaines, etc.
P粉287726308
P粉287726308 2023-09-13 22:30:14
0
1
504

Après avoir calculé le décalage horaire, comment puis-je déterminer si la différence n'est que de quelques minutes, heures ou jours, semaines, mois, années... ?

$now = new DateTime('now'); $expire_date = date('Y-m-d H:i:s', strtotime('+ 3 weeks')); $expire_on = new DateTime($expire_date); $time_left = $now->diff($expires_on); *** 伪代码如下所示,展示了我想要实现的功能 if ($time_left < 1 小时) 显示分钟 elseif ($time_left < 1 天) 显示小时和分钟 elseif ($time_left < 1 周) 显示天、小时和分钟 elseif ($time_left < 1 月) 显示周、天、小时和分钟 elseif ($time_left < 1 年) 显示月、周、天、小时和分钟 endif ** 结束伪代码

Comme je l’ai vite appris, j’avais besoin de clarifier les choses. Je souhaite seulement afficher un minimum d'informations. Par exemple : « 39 minutes restantes » au lieu de « 0 jour, 0 heure, 39 minutes restantes ».

P粉287726308
P粉287726308

répondre à tous (1)
P粉561438407

https://www.php.net/manual/en/class.dateinterval.php- Il y a certaines propriétés dans l'objet DateInterval ($time_left en fait partie) vous pouvez donc les tester et voir si elles sont supérieures que 0. Je recommande de commencer par le plus grand.

Par exemple :

$now = new DateTime('now'); $expire_date = date('Y-m-d H:i:s', strtotime('+3 weeks')); $expire_on = new DateTime($expire_date); $time_left = $now->diff($expire_on); echo format_interval($time_left); function format_interval($time_left) { $format_string = ""; $weeks = (int) ($time_left->d / 7); $days = (int) ($time_left->d - ($weeks * 7)); if ($time_left->y > 0) $format_string = "%y year(s), %m month(s), $weeks week(s), $days day(s), %h hour(s) and %i minute(s)"; elseif ($time_left->m > 0) $format_string = "%m month(s), $weeks week(s), $days day(s), %h hour(s) and %i minute(s)"; elseif ($weeks > 0) $format_string = "$weeks week(s), $days day(s), %h hour(s) and %i minute(s)"; elseif ($time_left->d > 0) $format_string = "$days day(s), %h hour(s) and %i minute(s)"; elseif ($time_left->h > 0) $format_string = "%h hour(s) and %i minute(s)"; elseif ($time_left->i > 0) $format_string = "%i minute(s)"; else $format_string = "%s second(s)"; return $time_left->format($format_string); }

Démo en ligne :https://3v4l.org/BiYHD. Essayez de peaufiner$expire_dateet testez les résultats que vous obtenez.

Remarque : Pour une raison quelconque, la classe DateInterval ne prend pas en charge l'indication du numéro de la semaine. Ci-dessus, je suppose que diviser le nombre de jours par 7 suffit pour calculer le nombre de semaines. Les jours restants doivent alors être recalculés (moins le nombre de jours de la semaine de distribution).

    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal
    À propos de nous Clause de non-responsabilité Sitemap
    Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!