Data una certa data, qual è il modo più semplice per determinare quanti giorni fino a quella data (in PHP)? Sto cercando di creare un widget di conto alla rovescia, grazie!Quanti giorni fino alla data X-Y-Z?
risposta
<?php
$cdate = mktime(0, 0, 0, 12, 31, 2009, 0);
$today = time();
$difference = $cdate - $today;
if ($difference < 0) { $difference = 0; }
echo "There are ". floor($difference/60/60/24)." days remaining";
?>
Non trattare le date come numeri interi. Usa il tuo database, che ha un buon supporto per gestire i calendari/ora.
select datediff("2009-11-12", now())
unix timestamp FTW – andufo
PHP 5.3 ha introdotto la classe DateTime che implementa la funzione di 'diff'. Vedi http://www.php.net/manual/en/datetime.diff.php
Ampliando la risposta di schnaader, qui è una funzione one-liner che prende una stringa di data come parametro, ma restituisce solo il numero di giorni:
<?php
function days_until($date){
return (isset($date)) ? floor((strtotime($date) - time())/60/60/24) : FALSE;
}
?>
Giorni minuti e secondi Formato:
// current time
$today = new DateTime(format_date(time(), 'custom', 'd M Y H:i:s'));
// date to which we want to compare (A Drupal field in my case).
$appt = new DateTime(format_date($yourdate_is_timestamp, 'custom', 'd M Y H:i:s'));
// Months
$months_until_appt = $appt->diff($today)-> m;
// days
$days_until_appt = $appt->diff($today)-> days;
// hours
$hours_until_appt = $appt->diff($today)-> h;
// minutes
$minutes_until_appt = $appt->diff($today)-> i;
// seconds
$seconds_until_appt = $appt->diff($today)-> s;
echo 'days until: ' . $days_until_appt;
echo 'hours until: ' . $hours_until_appt;
echo 'minutes until: ' . $minutes_until_appt;
echo 'seconds until: ' . $seconds_until_appt;
'DateTime' classe FTW –
Secondo http://php.net/manual/en/ref.datetime.php' -> days' (ad esempio) non è una classe valida metodo. Puoi modificare il tuo codice per usare '-> format ('d')', '-> format ('m')', ecc. Quindi è più chiaro per chi visita? – Wes
Per il record - I aggiornato per l'uso di 'DateTime' - non posso credere alla risposta accettata usando' DateTime' nella soluzione. – Wes
Ho appena trovato questo nel mio codice per un'app live in cui il sistema ha erroneamente considerato oggi e domani come oggi. Siamo appena entrati nel British Summer Time e questo ha causato un problema con la nostra app.
ora sto usando il seguente, che mi sta dando il risultato corretto:
function days_away_to($dt) {
$mkt_diff = strtotime($dt) - time();
return floor($mkt_diff/60/60/24) + 1; # 0 = today, -1 = yesterday, 1 = tomorrow
}
Naturalmente, utilizzando la classe DateTime è la soluzione migliore andando avanti ...
Questo è esattamente lo stesso codice che [è stato già pubblicato qui] (http://stackoverflow.com/a/8807610/447356) e hai appena cambiato i nomi delle variabili. -1 per aver cercato di ottenere un rappresentante per il lavoro di altre persone e sprecare il nostro tempo. –
Grazie SW ma sfortunatamente quella soluzione non ha funzionato per me: mi sta dando 0 per il 2014-03-31 dicendomi che quella è la data di oggi (è il 30 marzo ora nel Regno Unito).Ho aggiunto +1, che lo corregge per me. –
Quindi dovresti evidenziarlo nel tuo post collegandoti a quell'altra risposta e spiegando che hai appena aggiunto 1 per farlo funzionare. Si prega di fare la modifica e fammi sapere. –
- 1. PHP Conto alla rovescia fino alla data
- 2. Come ottengo quanti giorni fino al mio prossimo compleanno?
- 3. Aggiungi giorni alla data corrente
- 4. Formato da tick fino alla data
- 5. Come aggiungere giorno fino alla data in Linq a SQL
- 6. Php recupera quanti giorni e ore sono rimaste da una data
- 7. Quanti giorni aggiungere per "semi-mensile"
- 8. Conta giorni fino a oggi moment.js
- 9. Iterate in giorni, a partire da x data fino a una data di fine
- 10. Come aggiungere un numero di giorni alla data odierna?
- 11. Tentativo di aggiungere 3 giorni in millisecondi alla data corrente
- 12. Data relativa Bash (x giorni fa)
- 13. Numero di giorni tra data e data correnti campo
- 14. Calcolo quanti giorni sono tra due date in DB2?
- 15. convertito il datetime selezionato fino alla data in sqlalchemy
- 16. Errore strano durante l'analisi della stringa fino alla data?
- 17. Come analizzare la stringa fino alla data in xslt 2.0
- 18. Analisi della stringa fino alla data senza utilizzare SimpleDateFormat?
- 19. Convertire la stringa fino alla data, formato: "gg.mm.aaaa"
- 20. Come specificare il fuso orario fino alla data del filtro
- 21. Come posso scoprire la data di scadenza della password di ADUser oi giorni rimasti fino alla scadenza della password?
- 22. Show 12 giorni prima Data data
- 23. sottrarre Javascript giorni dalla data
- 24. Calcola giorni per andare fino a una data specifica con momenti
- 25. Ruby on Railsack Data ricerca data/ora fino a data
- 26. Tentativo di mostrare una data maggiore di dieci giorni
- 27. jQuery Scorrere fino alla sezione della pagina
- 28. UITableView Scorrere fino alla sezione
- 29. script Perl - aggiunge giorni per Data per ottenere nuova data
- 30. Mysql Data query> = 90 giorni
ringraziarvi per Questo! Risolto il mio problema :) – yanike
Questo dipende molto dalla definizione "giorni fino a". Ad esempio questo frammento mi dice che la vigilia di Capodanno è di 34 giorni di distanza, e wolfram alfa, google, siri e praticamente ogni altro sito che cerco mi dice 35 giorni. FWIW – AlBeebe
@AlBeebe quindi aggiungi solo +1. Cosa c'è di così difficile? – Devfly