Điều tôi muốn làm là tạo một lịch đơn giản và tôi muốn tìm ngày đầu tiên của tuần đầu tiên của một tháng cụ thể. Lịch của tôi là thứ Hai -> Lịch chủ nhật và mã sau hoạt động, nhưng bạn có thể thấy nó không đẹp. Bất cứ ai có bất kỳ ý tưởng tốt hơn về làm thế nào để có được ngày đầu tiên trong lịch.Tìm ngày đầu tiên của lịch
var now = new DateTime(Year, Month, 1);
now = now.AddDays(1-(int)now.DayOfWeek);
now = now.Day > 15 ? now : now.AddDays(-7);
Lịch sẽ kết thúc như thế này:
| < | Jan 2011 | > |
------------------------------------
| Mo | Tu | We | Th | Fr | Sa | Su |
|[27]| 28 | 29 | 30 | 31 | 01 | 02 |
| 03 | 04 | 05 | 06 | 07 | 08 | 09 |
| .. | .. | .. | .. | .. | .. | .. |
| .. | .. | .. | .. | .. | .. | .. |
| 31 | 01 | 02 | 03 | 04 | 05 | 06 |
Và trong "hình ảnh" đó là [27] Ngày mà tôi đang cố gắng để tìm.
Solution (Tìm thấy tôi tốt hơn/sạch hơn để lặp sau đó tính toán):
public DateTime FirstDay()
{
var date = new DateTime(Date.Year, Date.Month, 1);
while (true)
{
if (date.DayOfWeek == DayOfWeek.Monday)
return date;
date = date.AddDays(-1);
}
return date;
}
public DateTime LastDay()
{
var date = new DateTime(Date.Year, Date.Month,
DateTime.DaysInMonth(Date.Year, Date.Month));
while (true)
{
if (date.DayOfWeek == DayOfWeek.Sunday)
return date;
date = date.AddDays(1);
}
return date;
}
/BR Andreas
+1, cho nghệ thuật ASCII. –
+1 #wow, Thực ra tôi đã tạo một Lịch tương tự trong ứng dụng giao diện điều khiển với C trong trường Cao đẳng của tôi. –