Giải pháp được chấp nhận thực sự không chính xác.
Bạn phải chuyển đổi khi tuần "ngắt", nghĩa là khi nào tuần xét đến kết thúc hoặc bắt đầu, và công thức trong giải pháp được chấp nhận thì không.
Điều này không hiển thị vào thứ Hai khi bắt đầu tuần, nhưng nhiều hơn như vậy nếu bạn sẽ xem xét thứ Năm vào cuối tuần.
công thức đúng là (đối với ngày thứ Năm khi kết thúc ngày):
DateTime thu = date.AddDays(-(int)(date.AddDays(-5).DayOfWeek) -1);
Đối Thứ hai, -5 sẽ chuyển sang -2.
Ví dụ mã để in ra
String s = "";
DateTime date = new DateTime(2017, 1, 1);
for (int i = 0; i < 14; i++)
{
date = date.AddDays(1);
DateTime thu = date.AddDays(-(int)(date.AddDays(-5).DayOfWeek) -1);
DateTime mon = date.AddDays(-(int)(date.AddDays(-2).DayOfWeek) -1);
s += date.ToString() + " - Thu: " + thu.ToString() + " - Mon: " + mon.ToString() + "\r\n";
}
Console.WriteLine(s);
gì về sự phức tạp của việc tính toán tuần làm việc trước đó sau khi đóng cửa kinh doanh vào thứ Sáu, sau đó sẽ trả về tuần hiện tại rằng thứ sáu là trong? –