Come ottenere le marche temporali del primo e dell'ultimo minuto di qualsiasi mese utilizzando PHP?Data e ora di inizio e fine del mese
risposta
È possibile utilizzare mktime
e date
:
$first_minute = mktime(0, 0, 0, date("n"), 1);
$last_minute = mktime(23, 59, 59, date("n"), date("t"));
Questo è per il mese corrente. Se si desidera averlo per un mese, è necessario modificare di conseguenza il parametro del mese e del giorno.
Se si desidera generare per ogni mese, si può solo ciclo:
$times = array();
for($month = 1; $month <= 12; $month++) {
$first_minute = mktime(0, 0, 0, $month, 1);
$last_minute = mktime(23, 59, 59, $month, date('t', $first_minute));
$times[$month] = array($first_minute, $last_minute);
}
Usa mktime per la generazione di timestamp da ora/mese/giorno/... valori e cal_days_in_month a ottenere il numero di giorni in un mese:
$month = 1; $year = 2011;
$firstMinute = mktime(0, 0, 0, $month, 1, $year);
$days = cal_days_in_month(CAL_GREGORIAN, $month, $year);
$lastMinute = mktime(23, 59, 0, $month, $days, $year);
con PHP 5.3, si può fare
$oFirst = new DateTime('first day of this month');
$oLast = new DateTime('last day of this month');
$oLast->setTime(23, 59, 59);
In PHP 5.2
Nota: come AllThecode rilevare nei commenti qui sotto, prossimo esempio solo opere se si fa la parte $oFirst
prima. Se aggiungi +1 month
a new DateTime
, il risultato salterà un mese in più rispetto all'ultimo giorno del mese (a partire da php 5.5.9).
$oToday = new DateTime();
$iTime = mktime(0, 0, 0, $oToday->format('m'), 1, $oToday->format('Y'));
$oFirst = new DateTime(date('r', $iTime));
$oLast = clone $oFirst;
$oLast->modify('+1 month');
$oLast->modify('-1 day');
$oLast->setTime(23, 59, 59);
ATTENZIONE! Sono quasi bruciato da questo.-1 mese il 31 di un mese darà il 1 ° dello stesso mese, NON il mese precedente! –
@AllTheCode, è "-1 mese" un errore nel codice o nel commento? è "+1 mese" nell'esempio 5.2 sopra. – enobrev
Siamo spiacenti, non ho usato l'esempio originale. Lo stesso problema è per +1 mese. Se oggi è il 31 ottobre (che è) e aggiungi un mese, riceverai il 1 ° dicembre, non il 30 novembre. –
Questo richiede PHP> 5.2 e la necessità regolazione per i "minuti" parte
$year = ...; // this is your year
$month = ...; // this is your month
$month = ($month < 10 ? '0' . $month : $month);
$start = new DateTime($year . '-' . $month . '-01 00:00:00');
$end = $start->modify('+1 month -1 day -1 minute'); //perhaps this need 3 "->modify"
echo $start->format('U');
echo $end->format('U');
(non testato)
penso meglio allora
$first_minute = mktime(0, 0, 0, date("n"), 1);
$last_minute = mktime(23, 59, 0, date("n"), date("t"));
è:
$first_minute = mktime(0, 0, 0, date("n"), 1);
$last_minute = mktime(23, 59, 0, date("n") + 1, 0);
- 1. Ora di inizio e ora di fine in JMeter Scheduler
- 2. Moment JS inizio e fine di un determinato mese
- 3. Come ottenere l'inizio del mese della data e la data di fine della data?
- 4. elemento video html5, ora di inizio e di fine
- 5. Rails - Ricevi le date di inizio e fine della settimana e del mese corrente
- 6. Data e ora del mysql()
- 7. Identità Inizio e fine di un metodo
- 8. ricorsivo CTE - consolidare inizio e di fine
- 9. Inizio giorno Jodatime e fine giornata
- 10. Formato data/ora per un mese e anno
- 11. Dimensione data e ora nel data warehouse
- 12. Interfaccia utente jQuery Selezione di una data di inizio e di fine nell'intervallo in base alla data di inizio
- 13. Richiesta di documenti CouchDB tra una data di inizio e una data di fine
- 14. Data una data di inizio e di fine, creare un array di date tra i due
- 15. PHP get giorni tra data di inizio e data di fine
- 16. settimana di inizio e data di fine settimana numero e anno in Android
- 17. Registrazione data e ora Data e ora C#
- 18. seleziona data e ora più vecchie di
- 19. Aggiungi data e ora
- 20. Data e ora C++
- 21. Grep per inizio e fine riga?
- 22. sottrarre data e ora
- 23. Compilare data e ora
- 24. Inizio partita e fine del file in python con regex
- 25. Merge Data e ora
- 26. Trattare con data e ora in R
- 27. In un database, è meglio memorizzare un periodo di tempo come data di inizio/fine, o una data di inizio e un periodo di tempo?
- 28. java ottiene la prima data e l'ultima data del mese e l'anno specificato
- 29. Data e ora di tracciamento (ora/minuto/secondi) con Matplotlib
- 30. Data e ora di inizio di un nuovo giorno alle 3:00
credo in linea "$ last_minute = mktime (23, 59, 0, $ al mese, la data ('t', $ first_minute));" devi sostituire "$ first_minute" con "$ month", perché vuoi conoscere il numero di giorni in questo stesso mese. –
@PascalKlein è corretto con $ first_minute perché la funzione date prevede il timestamp come secondo argomento, non il numero del mese. – luka8088
@Pascal: cosa ha detto luka ... vedere http: //php.net/manual/en/function.date.php ... '$ first_minute' potrebbe essere un nome variabile confuso in questo caso, è davvero un timestamp del primo minuto del mese e 'date ('t', $ first_minute)' estrae il numero di giorni del mese nel timestamp. –