Come posso trovare l'ultimo giorno del mese in C#?Come si ottiene l'ultimo giorno del mese?
Ad esempio, se ho la data 03/08/1980, come ottengo l'ultimo giorno del mese 8 (in questo caso 31)?
Come posso trovare l'ultimo giorno del mese in C#?Come si ottiene l'ultimo giorno del mese?
Ad esempio, se ho la data 03/08/1980, come ottengo l'ultimo giorno del mese 8 (in questo caso 31)?
L'ultimo giorno del mese che si ottiene in questo modo, che restituisce 31:
DateTime.DaysInMonth(1980, 08);
public static DateTime ConvertToLastDayOfMonth (DateTime date) { return new DateTime (date.Year, date.Month, DateTime.DaysInMonth (date.Year, date.Month)); } per ottenere l'ultimo giorno del mese in un formato data – regisbsb
DateTime firstOfNextMonth = new DateTime(date.Year, date.Month, 1).AddMonths(1);
DateTime lastOfThisMonth = firstOfNextMonth.AddDays(-1);
"Come ottenere l'ultimo giorno di un mese?". DateTime.DaysInMonth (anno, mese) restituirà quanti giorni ci sono nel mese, questo restituirà la stessa risposta per "qual è l'ultimo giorno del mese". La tua strada funziona, ma penso che sia troppo codice per una cosa semplice. – rochasdv
Sottrarre al giorno a partire dal primo giorno del mese successivo:
DateTime lastDay = new DateTime(MyDate.Year,MyDate.Month+1,1).AddDays(-1);
Inoltre, in caso di necessità di lavorare per dicembre anche:
DateTime lastDay = new DateTime(MyDate.Year,MyDate.Month,1).AddMonths(1).AddDays(-1);
var lastDayOfMonth = DateTime.DaysInMonth(date.Year, date.Month);
@Henk In realtà l'ho estratto da un punto della nostra origine che crea il 'DateTime' da 'lastDayOfMonth'. Onestamente, in entrambi i casi funziona perfettamente. È un argomento pedante in che modo è meglio. L'ho fatto in entrambi i modi ed entrambi hanno ottenuto la stessa risposta. – Mark
Mark, no.Il tuo risultato è un 'int', mio un' DateTime'. Riguarda chi di noi ha letto (indovinato) le specifiche migliori. –
I don' so C# ma, se si scopre che non esiste un comodo modo API per ottenerlo, uno dei modi in cui puoi farlo è seguire la logica:
today -> +1 month -> set day of month to 1 -> -1 day
Ovviamente, si presuppone che tu disponga di dati matematici di quel tipo.
Se si desidera che la data di, dato un mese e un anno, questo sembra circa la destra:
public static DateTime GetLastDayOfMonth(this DateTime dateTime)
{
return new DateTime(dateTime.Year, dateTime.Month, DateTime.DaysInMonth(dateTime.Year, dateTime.Month));
}
È possibile trovare l'ultima data di un mese da questo codice:
var now = DateTime.Now;
var startOfMonth = new DateTime(now.Year, now.Month, 1);
var DaysInMonth = DateTime.DaysInMonth(now.Year, now.Month);
var lastDay = new DateTime(now.Year, now.Month, DaysInMonth);
È possibile trovare l'ultimo giorno del mese da una singola riga di codice:
int maxdt = (new DateTime(dtfrom.Year, dtfrom.Month, 1).AddMonths(1).AddDays(-1)).Day;
Mi viene da chiedermi che invece del metodo semplice: 'DateTime.DaysInMonth', perché qualcuno dovrebbe cercare questo modo illeggibile e complesso per raggiungerlo !? - Ma come una soluzione valida è accettabile;). –
Da DateTimePicker:
Prima data:
DateTime first_date = new DateTime(DateTimePicker.Value.Year, DateTimePicker.Value.Month, 1);
Ultima data:
DateTime last_date = new DateTime(DateTimePicker.Value.Year, DateTimePicker.Value.Month, DateTime.DaysInMonth(DateTimePicker.Value.Year, DateTimePicker.Value.Month));
Per ottenere l'ultimo giorno del mese in un calendario specifico e in un metodo di estensione:
public static int DaysInMonthBy(this DateTime src, Calendar calendar)
{
var year = calendar.GetYear(src); // year of src in your calendar
var month = calendar.GetMonth(src); // month of src in your calendar
var lastDay = calendar.GetDaysInMonth(year, month); // days in month means last day of that month in your calendar
return lastDay;
}
@ Mark: Che cosa posso chiedere? La tua risposta non richiede un metodo di estensione, credo. – abatishchev
L'ultimo giorno non è specifico solo per il mese, è necessario anche l'anno. L'ultimo giorno di febbraio 2010 è 28, ma l'ultimo giorno di febbraio 2008 è il 29. – Guffa
@abatishchev Non richiede _questione un metodo di estensione, ma la domanda in realtà non lo richiede. Tuttavia, è molto più bello e molto più leggibile, almeno per me, vederlo. Il metodo di estensione era più di un suggerimento che altro. Qualsiasi soluzione funzionerebbe in un metodo di estensione, non solo mio. – Mark