Theo tiêu chuẩn POSIX.1-2001, vào tháng tới (khi tăng dần tm_mon
trước khi gọi mktime
) được thực hiện bằng cách điều chỉnh các giá trị cho đến khi chúng phù hợp. Vì vậy, ví dụ:tháng tới từ ngày 31 tháng 1 năm 2001 là ngày 3 tháng 3 năm 2001. Điều này là do tm_mday
của 31 không hợp lệ với tm_mon
của ngày 1 (tháng 2), vì vậy nó được chuẩn hóa thành tm_mon
của ngày 2 (tháng 3) và tm_mday
trong tổng số 3.
Tháng tiếp theo kể từ ngày 31 tháng 1 năm 2000 là ngày 2 tháng 3 năm 2000, vì tháng 2 có 29 ngày trong năm đó. Tháng tiếp theo kể từ tháng 1 năm 2038 không tồn tại, tùy thuộc vào.
Điều tuyệt vời về tiêu chuẩn là có rất nhiều tiêu chuẩn để bạn lựa chọn . Kiểm tra tiêu chuẩn SQL, tôi cá là bạn có thể tìm thấy một ý nghĩa khác của tháng tới. Tôi nghi ngờ ISO 8601 có thể cung cấp cho bạn một sự lựa chọn khác. Vấn đề là, có nhiều hành vi khác nhau, ý nghĩa của 'tháng tới' rất cụ thể theo từng miền.
chỉnh sửa:I think Tôi đã tìm thấy cách SQL-92 xử lý nó, có vẻ như yêu cầu vào tháng tới kể từ ngày 31 tháng 1 là một lỗi.
Liên kết:
- SQL-92: http://www.contrib .andrew.cmu.edu / ~ shadow / sql / sql1992.txt
- POSIX: http://pubs.opengroup.org/onlinepubs/9699919799/ (mặc dù rõ ràng phiên bản đó hiện đã chuyển sang ISO C, điều này có vẻ không rõ ràng. Tuy nhiên, trang mktime trên máy của tôi vẫn rõ ràng)
- ISO C: http:// www .open-std.org / jtc1 / sc22 / wg14 / www / docs / n1256.pdf
- Java: http:// tải xuống. oracle.com/javase/6/docs/api/java/util/Calendar.html