Menurut standar POSIX.1-2001, bulan depan (seperti penambahan tm_mon
sebelum memanggil mktime
) dilakukan dengan menyesuaikan nilai sampai cocok. Jadi, misalnya, bulan depan dari tanggal 31 Januari 2001 adalah tanggal 3 Maret 2001. Hal ini karena tm_mday
dari 31 tidak valid dengan tm_mon
dari 1 (Februari), sehingga dinormalisasi menjadi tm_mon
dari 2 (Maret) dan tm_mday
dari 3.
Bulan berikutnya dari 31 Januari 2000 adalah 2 Maret 2000, karena Februari memiliki 29 hari tahun itu. Bulan berikutnya dari Januari 1 2038 tidak ada, tergantung.
Hal hebat tentang standar adalah banyaknya pilihan . Periksa standar SQL, saya yakin Anda dapat menemukan arti yang berbeda dari bulan depan. Saya menduga ISO 8601 dapat memberi Anda pilihan lain. Intinya adalah, ada banyak perilaku yang berbeda, arti dari 'bulan depan' sangat spesifik untuk domain.
edit:Saya berpikir Saya telah menemukan bagaimana SQL-92 menanganinya, ternyata meminta bulan depan dari tanggal 31 Januari adalah sebuah kesalahan.
Tautan:
- SQL-92:http://www.contrib .andrew.cmu.edu/~shadow/sql/sql1992.txt
- POSIX:http://pubs.opengroup.org/onlinepubs/9699919799/ (walaupun tampaknya versi itu sekarang mengacu pada ISO C, yang tampaknya tidak begitu jelas. Namun, halaman manual mktime di komputer saya sudah jelas)
- ISO C:http://www .open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf
- Java:http://download. oracle.com/javase/6/docs/api/java/util/Calendar.html