Zona Waktu PHP dengan menit berbeda dari 00 atau 30 atau 45 pada tanggal lama

Saya sedang mengerjakan sistem yang perlu menangani catatan dalam database yang melibatkan serangkaian periode yang sangat lama, dan saya berakhir dengan masalah terkait zona waktu.

Dari pencarian saya, hanya ada zona waktu yang memiliki nilai 00, 30 atau 45 dalam satuan menit (https://www.timeanddate.com/time/time-zones-interesting.html). Namun, ketika kita akan menguraikan tanggal-tanggal yang sangat lama, nampaknya zona waktu digeser dengan cara tertentu, mungkin dalam upaya untuk mengoreksi waktu.

Kode:

<?php
$timezones = timezone_identifiers_list();
foreach ($timezones as $k => $tz) {
    date_default_timezone_set($tz);
    echo $tz . ' - ' . \DateTime::createFromFormat('Y-m-d H:i:s', '1900-01-01 00:00:00')->format(DATE_ATOM) . PHP_EOL;
}

Beberapa contoh pengembalian:

  • Afrika/Addis_Ababa - 01-01-1900T00:00:00+02:27
  • Amerika/Argentina/San_Luis - 01-01-1900T00:00:00-04:16
  • Amerika/Bahia_Banderas - 01-01-1900T00:00:00-07:01
  • Amerika/Sao_Paulo - 01-01-1900T00:00:00-03:06
  • Asia/Kuala_Lumpur - 01-01-1900T00:00:00+06:46
  • Eropa/Athena - 01-01-1900T00:00:00+01:34
  • Eropa/Dublin - 01-01-1900T00:00:00-00:25

Adakah yang bisa memberi tahu kami apa yang terjadi??

Terima kasih!


person chuckedw    schedule 30.03.2021    source sumber
comment
Waktu (cap) mulai dihitung pada 01-01-1970.   -  person Markus Zeller    schedule 31.03.2021
comment
@MarkusZeller, meskipun menurut saya ini tidak terkait dengan pertanyaan ini secara langsung, dalam PHP stempel waktu adalah angka 32 atau 64 bit sesuai dengan dokumen. Rentang stempel waktu yang valid biasanya dari Jum, 13 Des 1901 20:45:54 UTC hingga Sel, 19 Jan 2038 03:14:07 UTC. (Ini adalah tanggal yang sesuai dengan nilai minimum dan maksimum untuk bilangan bulat bertanda 32-bit.) Ini adalah fungsi yang berbeda, tetapi masih berupa stempel waktu.   -  person Chris Haas    schedule 31.03.2021
comment
@chuckedw, seperti yang disebutkan Sammitch dalam jawaban mereka, zona waktu menjadi sangat rewel semakin jauh Anda pergi. Misalnya, jika Anda fokus hanya pada Afrika/Addis_Abada, Anda akan menemukannya di 1936 mereka bergeser 24 menit 40 detik ke depan.   -  person Chris Haas    schedule 31.03.2021
comment
Dan, di lokasi yang sama, sesuatu terjadi pada tahun 1908 saat bulan April berganti ke Mei   -  person Chris Haas    schedule 31.03.2021


Jawaban (1)


Zona waktu belum menjadi sesuatu yang penting hingga akhir abad ke-19, dan bahkan pada saat itu, zona waktu tidak akan menjadi kumpulan offset 1 jam yang kaku, kecuali jika Anda memiliki sistem kereta api yang sangat besar secara geografis yang ingin Anda koordinasikan, seperti yang dimiliki AS.

Sebagian besar daerah hanya mengatur selisih waktunya sesuai dengan hari sebenarnya atau berapa pun selisih waktu yang digunakan observatorium astronomi terdekat, sehingga timbul selisih yang aneh.

Aturan dan sejarah yang mengatur ketepatan waktu sangatlah luas, rumit, dan sering kali remeh. Inilah sebabnya kami memiliki perpustakaan Tanggal/Waktu dan /usr/share/zoneinfo dengan 1788 file konfigurasi.

person Sammitch    schedule 30.03.2021
comment
Sebagai tambahan, sebagian besar entri zona waktu di tzdb dimulai dengan entri LMT, yang mewakili Rata-rata Lokal Waktu di kota yang mewakili zona waktu. Asumsinya adalah sebelum adanya zona waktu yang tercatat, orang-orang yang mungkin pernah berada di wilayah tersebut menyelaraskan konsep waktu mereka dengan posisi matahari di langit. Meskipun jika Anda melihat ke masa lalu, hal tersebut tidak benar, karena beberapa peradaban mungkin hanya memikirkan waktu dalam segmen besar yang tidak jelas, seperti dini hari, sore hari, dan sebagainya. Kata tengah malam tidak selalu berarti jam 12 pagi. - person Matt Johnson-Pint; 31.03.2021