Ini selalu merupakan teka-teki bagi saya dan saya menyadari bahwa ini bukan masalah yang serius dalam pemrograman atau pengembangan perangkat lunak, tetapi tampaknya ini merupakan masalah umum yang wajar di bidang kami.
Misalnya, jika saya menetapkan tanggal kedaluwarsa sebagai 2011-04-08 00:00:00 - dan mengingat waktu setempat saya saat ini adalah 10:45 pada tanggal 8 - apakah saya sudah kedaluwarsa? Atau apakah saya masih punya setengah hari lagi?
Apakah ada standar universal yang pada akhirnya berakhir pada tengah malam 'milik'?
Atau haruskah saya mengambil lembaran dari militer Inggris, dan mengatakan bahwa hari itu berakhir pada 23:59:59 dan dimulai pada 00:00:01 dan bahwa tidak ada tengah malam?
language-agnostic
time
HorusKol
sumber
sumber
24:00:00
digunakan untuk menggambarkan tengah malam pada akhir hari.Jawaban:
Saya pikir dalam pemrograman (oracle dan php, tidak yakin tentang bahasa lain), tengah malam adalah awal hari. Misalnya jika Anda memotong (sysdate) Anda akan mendapatkan 2011-04-08 00:00:00 yang merupakan masa lalu kami.
jadi, ketika jam berubah dari 23:59:59 hingga 00:00:00, tanggal sebenarnya berubah dari 2011-04-08 menjadi 2011-04-09
sumber
Tambahan untuk jawaban @Phelios, jika Anda memiliki waktu seperti 00:00:00, ini belum tentu tepat tengah malam. Alih-alih, ini adalah kumpulan besar titik waktu yang tak terhingga, yang semuanya memiliki jarak maksimum <1 detik satu sama lain. Misalnya, semua jam 00: 00: 00.345, 00: 00: 00.567 dan 00: 00: 00.842 jelas terletak pada sisi-tengah-tengah-hari yang baru, tetapi akan disingkat menjadi "00:00:00" untuk tujuan tampilan. Demikian juga, 23: 59: 59: 899 terletak di sisi lama tengah malam. Jadi, tengah malam itu sendiri adalah rentang waktu yang sangat singkat antara hari-hari yang tidak akan pernah Anda lalui dalam praktik.
sumber
Ini adalah masalah yang mirip dengan menghitung perbedaan antara sudut menggunakan geometri lingkaran, di mana misalnya, 0 derajat dan 360 derajat (dan 720 derajat, dll) semuanya sama. Jadi apa perbedaan antara 350 derajat dan 10 derajat?
Jawaban: itu tergantung pada arah mana Anda ingin mengukurnya - mungkin 20 derajat atau 340 derajat. Tetapi melakukan perhitungan untuk perbedaan sudut sebenarnya cukup berantakan. Perbedaan waktu calcs juga berantakan kecuali Anda mengkonversi ke bentuk internal yang membuat penambahan dan pengurangan sederhana beroperasi secara konvensional. Atau Anda menggunakan perpustakaan kelas modern yang secara ajaib menyembunyikan semua itu dari Anda (dan dengan demikian tidak pernah mengajarkan siapa pun tentang detail aktual).
sumber