Tôi cần lấy ngày đầu tiên và cuối cùng của tháng theo định dạng YYYY-MM-DD chỉ được cung cấp trong tháng và năm. Có cách nào tốt, dễ dàng để thực hiện việc này không?Trong PHP, có cách nào dễ dàng để có được ngày đầu tiên và cuối cùng của một tháng không?
Trả lời
$first = date('Y-m-d', mktime(0, 0, 0, $month, 1, $year));
$last = date('Y-m-t', mktime(0, 0, 0, $month, 1, $year));
Xem date() trong tài liệu PHP.
Ngày đầu tiên luôn là YYYY-MM-01, phải không? Ví dụ: date("Y-M-d", mktime(0, 0, 0, 8, 1, 2008))
Ngày cuối cùng là ngày hôm trước của ngày đầu tiên vào tháng tới:
$date = new DateTime("2008-09-01");
$date->modify("-1 day");
echo $date->format("Y-m-d");
Ngày đầu tiên của tháng luôn là 1. Vì vậy, nó sẽ trở thành
YYYY-MM-01
sự ngày cuối cùng có thể được tính như sau:
<?php
$num = cal_days_in_month(CAL_GREGORIAN, 8, 2003); // 31
echo "There was $num days in August 2003";
?>
OK, trước hết là dễ dàng.
date ('Y-m-d', mktime(0,0,0,MM,01,YYYY));
Cuối cùng hơi phức tạp hơn một chút, nhưng không nhiều.
date ('Y-m-d', mktime(0,0,0,MM + 1,-1,YYYY));
Nếu tôi nhớ PHP của tôi ngày thứ một cách chính xác ...
** chỉnh sửa - Gah! Đánh đến nó khoảng một triệu lần ...
Sửa bởi Pat:
Ngày cuối cùng cần phải có được
date ('Y-m-d', mktime(0,0,0,$MM + 1,0,$YYYY)); // Day zero instead of -1
Bằng cách này @ZombieSheep giải pháp
date ('Y-m-d', mktime(0,0,0,$MM + 1,-1,$YYYY));
không hoạt động phải là
date ('Y-m-d', mktime(0,0,0,$MM + 1,0,$YYYY)); // Day zero instead of -1
Tất nhiên giải pháp được chấp nhận của Michał Słaby là đơn giản nhất.
Chỉ cần để xác minh rằng tôi đã không bỏ lỡ bất kỳ rỗi:
$startDay = 1;
if (date("m") == 1) {
$startMonth = 12;
$startYear = date("Y") - 1;
$endMonth = 12;
$endYear = date("Y") - 1;
}
else {
$startMonth = date("m") - 1;
$startYear = date("Y");
$endMonth = date("m") - 1;
$endYear = date("Y");
}
$endDay = date("d") - 1;
$startDate = date('Y-m-d', mktime(0, 0, 0, $startMonth , $startDay, $startYear));
$endDate = date('Y-m-d', mktime(0, 0, 0, $endMonth, $endDay, $endYear));
<?php
echo "Month Start - " . $monthStart = date("Y-m-1") . "<br/>";
$num = cal_days_in_month(CAL_GREGORIAN, date("m"), date("Y"));
echo "Monthe End - " . $monthEnd = date("Y-m-".$num);
?>
Cách dễ nhất để làm điều này với PHP là
$dateBegin = strtotime("first day of last month");
$dateEnd = strtotime("last day of last month");
echo date("MYDATEFORMAT", $dateBegin);
echo "<br>";
echo date("MYDATEFORMAT", $dateEnd);
Hoặc tuần trước
if (date('N', time()) == 7) {
$dateBegin = strtotime("-2 weeks Monday");
$dateEnd = strtotime("last Sunday");
} else {
$dateBegin = strtotime("Monday last week");
$dateEnd = strtotime("Sunday last week");
}
Hoặc năm ngoái
$dateBegin = strtotime("1/1 last year");
$dateEnd = strtotime("12/31 this year");
thử loại này để có được số ngày trong tháng:
$numdays = date('t', mktime(0, 0, 0, $m, 1, $Y));
Ví dụ; Tôi muốn có ngày đầu tiên và ngày cuối cùng của tháng hiện tại.
$month = (int) date('F');
$year = (int) date('Y');
date('Y-m-d', mktime(0, 0, 0, $month + 1, 1, $year)); //first
date('Y-m-d', mktime(0, 0, 0, $month + 2, 0, $year)); //last
Khi bạn chạy ví dụ này vào ngày 2015-01-09, giá trị đầu tiên và cuối cùng sẽ được tuần tự;
2015-01-01
2015-01-31
Đã kiểm tra.
Từ here(get next month last day) được đánh dấu là trùng lặp, vì vậy tôi không thể thêm nhận xét ở đó, nhưng mọi người có thể nhận được câu trả lời không tốt từ đó.
một đúng cho ngày cuối cùng của tháng tiếp theo:
echo ((new DateTime(date('Y-m').'-01'))->modify('+1 month')->format('Y-m-t'));
một đúng cho ngày đầu tiên của tháng tiếp theo:
echo ((new DateTime(date('Y-m').'-01'))->modify('+1 month')->format('Y-m-01'));
Mã như thế này sẽ được cung cấp tháng từ tháng giêng, vì vậy đó không phải là những gì có thể được mong đợi.
echo ((new DateTime())->modify('+1 month')->format('Y-m-t'));
- 1. Cách tốt nhất để có được ngày đầu tiên và cuối cùng của tháng trước?
- 2. Lấy ngày tháng đầu tiên và ngày cuối cùng của tháng trước đó trong C#
- 3. Làm thế nào để có được ngày cuối cùng của tháng bằng cách sử dụng php
- 4. Làm thế nào để có được ngày cuối cùng của một tháng cụ thể với JodaTime?
- 5. Ngày đầu tiên và ngày cuối cùng của tháng hiện tại
- 6. Làm cách nào để có được ngày đầu tiên và ngày cuối cùng của tháng với Thời gian chờ của Perl?
- 7. SQL Server 2005 Nhận ngày đầu tiên và cuối cùng cho bất kỳ tháng nào trong bất kỳ năm nào
- 8. cách lấy ngày đầu tiên và ngày cuối cùng của tháng trước bằng cách sử dụng sql
- 9. Cách dễ dàng để có được số ngày của quý hiện tại?
- 10. Cách tìm ngày cuối cùng của tháng?
- 11. Ngày cuối cùng của tháng trong .NET
- 12. Nhận ngày cuối cùng của tháng?
- 13. Làm cách nào để có được ngày đầu tiên của tháng hiện tại?
- 14. Cách lấy ngày đầu tiên và ngày cuối cùng của năm hiện tại trong C#
- 15. Làm thế nào để có được ngày đầu tiên của mỗi tháng tương ứng trong mysql?
- 16. Làm cách nào để có được ngày đầu tiên trong tuần của một ngày trong mysql?
- 17. Có cách nào dễ dàng hơn để bắt đầu thời gian trong ngày hiện tại không?
- 18. java nhận ngày đầu tiên và ngày cuối cùng của tháng đã cho và năm nhất định
- 19. Nhận ngày đầu tiên/cuối cùng của tuần
- 20. cách lấy ngày đầu tiên và ngày cuối cùng của số tuần và năm
- 21. Có cách nào dễ dàng để tạo kiểu cho các ký tự cuối cùng của một chuỗi không?
- 22. ngày cuối cùng của tháng tính toán
- 23. Lấy ngày cuối cùng của tháng trong SQL
- 24. javascript ngày ngày cuối cùng của tháng trước
- 25. php: strtotime ("31/12/2004 +6 tháng")); không quay trở lại ngày cuối cùng của tháng
- 26. NSDate cho ngày đầu tiên của tháng
- 27. Cách đơn giản nhất để tạo ngày tháng là ngày đầu tiên của tháng, được đưa ra ngày khác
- 28. Một cách dễ dàng để căn giữa văn bản giữa từ đầu tiên và cuối cùng không phải màu trắng trong vim?
- 29. Làm thế nào để có được thứ sáu cuối cùng của tháng (s) sử dụng .NET
- 30. Ngày hạn chế ngày tháng trong ngày đầu tiên trong trường ngày đầu tiên
tôi cảm thấy loại ngu ngốc cho hỏi cho ngày đầu tiên của một tháng ....: \ –