Làm cách nào tôi có thể tìm thấy ngày cuối cùng của tháng trong C #?
Ví dụ: nếu tôi có ngày 03/08/1980, làm thế nào để tôi có được ngày cuối cùng của tháng 8 (trong trường hợp này là 31)?
Làm cách nào tôi có thể tìm thấy ngày cuối cùng của tháng trong C #?
Ví dụ: nếu tôi có ngày 03/08/1980, làm thế nào để tôi có được ngày cuối cùng của tháng 8 (trong trường hợp này là 31)?
Câu trả lời:
Ngày cuối cùng của tháng bạn nhận được như thế này, trả về 31:
DateTime.DaysInMonth(1980, 08);
var lastDayOfMonth = DateTime.DaysInMonth(date.Year, date.Month);
DateTime
từ lastDayOfMonth
. Thành thật một trong hai cách làm việc hoàn toàn tốt. Đó là một cuộc tranh luận mang tính mô phạm mà cách nào tốt hơn. Tôi đã làm cả hai cách và cả hai đều cho cùng một câu trả lời.
Nếu bạn muốn ngày , được đưa ra một tháng và một năm, điều này có vẻ đúng:
public static DateTime GetLastDayOfMonth(this DateTime dateTime)
{
return new DateTime(dateTime.Year, dateTime.Month, DateTime.DaysInMonth(dateTime.Year, dateTime.Month));
}
Bạn có thể tìm thấy ngày cuối cùng của tháng bằng một dòng mã:
int maxdt = (new DateTime(dtfrom.Year, dtfrom.Month, 1).AddMonths(1).AddDays(-1)).Day;
DateTime.DaysInMonth
tại sao ai đó nên tìm cách khó hiểu và phức tạp này để đạt được nó!? - Nhưng như một giải pháp hợp lệ là chấp nhận được;).
Từ DateTimePicker:
Buổi hẹn đầu tiên:
DateTime first_date = new DateTime(DateTimePicker.Value.Year, DateTimePicker.Value.Month, 1);
Ngày cuối cùng:
DateTime last_date = new DateTime(DateTimePicker.Value.Year, DateTimePicker.Value.Month, DateTime.DaysInMonth(DateTimePicker.Value.Year, DateTimePicker.Value.Month));
Để có được ngày cuối cùng của tháng trong một lịch cụ thể - và theo phương thức mở rộng -:
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;
}
// Use any date you want, for the purpose of this example we use 1980-08-03.
var myDate = new DateTime(1980,8,3);
var lastDayOfMonth = new DateTime(myDate.Year, myDate.Month, DateTime.DaysInMonth(myDate.Year, myDate.Month));
var myDate = new DateTime(1980, 1, 31);
(trả lại ngày 29)
Tôi không biết C # nhưng, nếu nó không có cách API thuận tiện để có được nó, một trong những cách bạn có thể làm là bằng cách tuân theo logic:
today -> +1 month -> set day of month to 1 -> -1 day
Tất nhiên, điều đó giả định rằng bạn có toán ngày theo kiểu đó.