Bài toán:
Cho ngày cụ thể D. Tìm khoảng thời gian 1 tuần Dx - Dy sao cho D thuộc trong khoảng thời gian Dx - Dy. Biết Dx là ngày thứ ba (Tuesday).
Giải:
1 tuần có 7 ngày
Chủ nhật | Thứ hai |
Thứ ba | Thứ tư |
Thứ năm | Thứ sáu |
Thứ bẩy |
Từ ngày D ta xác định được D là ngày chủ nhật hay thứ mấy.
Do khoảng thời gian là 1 tuần, Dx là thứ ba nên Dy là thứ hai.
Nhìn vào bảng trên, ta nhận thấy:
- Nếu D là ngày Thứ ba, Thứ tư, Thứ năm, Thứ sáu, Thứ bẩy thì Dx sẽ là Thứ ba trong bảng. Dy sẽ là Thứ hai - 1 tuần sau của Thứ hai trong bảng.
- Nếu D là ngày Chủ nhật hoặc Thứ hai thì Dy sẽ là Thứ hai trong bảng. Theo đó Dx sẽ là Thứ ba - 1 tuần trước của Thứ ba trong bảng.
Code PHP:
$d = time(); // CURRENT TIME
$dayIndex = date('w', $d); // Trả về số thứ tự của ngày trong tuần, bắt đầu từ 0 là Chủ nhật
if ($dayIndex >=
2) {
// 2 là số thứ tự của Thứ ba $dx= strtotime(date('Y-m-d 00:00:00', $d- ($dayIndex -
2) *24*3600));
$dy= strtotime(date('Y-m-d 23:59:59', $dx+6*24*3600));
} else {
$dy= strtotime(date('Y-m-d 00:00:00', $d+ (
1-$dayIndex ) *24*3600));
// 1 là số thứ tự của Thứ hai $dx= strtotime(date('Y-m-d 23:59:59', $dy-6*24*3600));
}
echo date('Y-m-d', $dx) . ' - ' . date('Y-m-d', $dy);