Se ho un DateTime
che è, ad esempio, 2012-05-24
, qual è il modo più rapido per convertirlo in una data che è l'ultimo giorno del mese (2012-05-31
).Come trasformare DateTime nell'ultimo giorno del mese?
risposta
Ebbene si può utilizzare:
DateTime date = ...;
var endOfMonth = new DateTime(date.Year, date.Month,
DateTime.DaysInMonth(date.Year, date.Month));
Si noti che che creerà un DateTime
con un Kind
di Unspecified
. Dovresti considerare cosa vuoi veramente fare Kind
. (Oppure utilizzare la mia libreria Noda Time, dove occorre utilizzare un LocalDate
invece.)
perché hai usato il tipo 'var' invece di' DateTime'? –
@SubinJacob: Sembra abbastanza chiaro, dato che sto chiamando esplicitamente 'new DateTime (...)'. Cambierò quello per 'date' però. –
La mia risposta sembra inutile quando rispondi all'uomo :( –
Ecco alcuni metodi di estensione che uso:
public static class DateTimeExtensionMethods
{
public static DateTime StartOfMonth(this DateTime date)
{
return new DateTime(date.Year, date.Month, 1);
}
public static DateTime EndOfMonth(this DateTime date)
{
return date.StartOfMonth().AddMonths(1).AddSeconds(-1);
}
}
Si noti che nel mio caso io li sto usando per le query SQL, in modo Voglio che sia fino all'ultimo secondo dell'ultimo giorno del mese.
Sulla base di commenti, sì, se si desidera solo desidera che la data e non il tempo, è possibile utilizzare:
public static DateTime EndOfMonth(this DateTime date)
{
return date.StartOfMonth().AddMonths(1).AddDays(-1);
}
o semplicemente usare la proprietà Date
del risultato per ottenere solo la parte di data, allora soddisfa entrambi i casi a seconda di come lo si utilizza.
Quella "fine del mese" darà le 23:59:59 dell'ultimo giorno del mese, che non è quello che è stato descritto Certo, l'OP potrebbe usare la proprietà 'Date', ma è più pulito solo per creare un nuovo' DateTime' a mezzanotte, proprio come fa per 'StartOfMonth'. (E può essere fatto direttamente molto facilmente.) –
Solo cambia invece .AddSeconds (-1) in .AddDays (-1) invece di. – Loyalar
@ LarsJensen: A quel punto eliminerei il mio downvote, sì. Non sarebbe ancora la mia soluzione preferita, ma almeno sarebbe meglio. (È strano rimuovere "un secondo" in ogni caso - non è che questo rappresenti l'ultimo valore di "DateTime" del giorno.Uno * tick * sarebbe più ragionevole, ma di solito quando sono coinvolti i tempi è meglio usare un end-point esclusivo per un intervallo comunque ...) –
Prova questa
DateTime dt = DateTime.Parse("2012-05-24");
DateTime lastDate = new DateTime(dt.Year, dt.Month, DateTime.DaysInMonth(dt.Year, dt.Month));
Prova questa
DateTime date = new DateTime(2012, 05, 24);
DateTime endOfMonth = new DateTime(date.Year, date.Month, DateTime.DaysInMonth(date.Year, date.Month));
uscita: 2012/05/31 12:00:00
È quindi possibile modificare questo al vostro formato richiesto .
- 1. Come aggiungere giorno a DateTime alla fine del mese?
- 2. Come trovi l'ultimo giorno del mese?
- 3. Ricevi l'ultimo giorno del mese?
- 4. Ultimo giorno del mese in. NET
- 5. SQL - Get numerica giorno del mese/trimestre
- 6. L'ultimo giorno del mese sbagliato
- 7. giorno foreach nel mese
- 8. Come ottenere il giorno del mese?
- 9. Come ottenere l'ultimo giorno del mese
- 10. Come trovare l'ultimo giorno del mese?
- 11. Come si ottiene l'ultimo giorno del mese?
- 12. Creare un datetime in Rails utilizzando mese, giorno e anno
- 13. Ottieni l'anno/mese/giorno da un datetime in php?
- 14. javascript data dell'ultimo giorno del mese precedente
- 15. Ricevi prima, ultimo giorno del mese?
- 16. Primo e ultimo giorno del mese corrente
- 17. Come posso ottenere il primo e l'ultimo giorno del mese con Perl's DateTime?
- 18. Arrotondamento al primo giorno del mese
- 19. Formato data in giorno, mese giorno, anno
- 20. DateTime.Now.ToShortDateString(); sostituire mese e giorno
- 21. panda: convertire datetime a fine del mese
- 22. Come ottenere il timestamp del mese corrente, il primo giorno del mese, l'ora zero
- 23. Come ottenere il primo giorno del mese corrente in PHP?
- 24. MomentJS - Come ottenere l'ultimo giorno del mese precedente dalla data?
- 25. Come posso ottenere l'ultimo giorno del mese in C#?
- 26. Come posso selezionare "ultimo giorno lavorativo del mese" in Panda?
- 27. Formato .Net DateTime "Giorno" senza zero iniziale
- 28. DateTime aggiungere 1 giorno
- 29. come ottenere il mese precedente primo giorno e il mese futuro ultimo giorno utilizzando moment.js
- 30. SQL: Come produrre la data successiva data mese e giorno
Già questa domanda può discusso ** [ref] [1] ** [1]:. Http://stackoverflow.com/questions/2493032/how-to-get-the-last -giorno-di-un-mese –