เขตเวลา PHP ที่มีนาทีแตกต่างจาก 00 หรือ 30 หรือ 45 ในวันเก่า

ฉันกำลังทำงานกับระบบที่ต้องจัดการกับบันทึกในฐานข้อมูลที่เกี่ยวข้องกับช่วงเวลาที่เก่ามาก และจบลงด้วยปัญหาที่เกี่ยวข้องกับเขตเวลา

จากสิ่งที่ฉันค้นหา มีเพียงเขตเวลาที่มีค่า 00, 30 หรือ 45 เป็นนาที (https://www.timeanddate.com/time/time-zones-interesting.html) อย่างไรก็ตาม เมื่อเราจะแยกวิเคราะห์วันที่เก่ามาก ดูเหมือนว่าเขตเวลามีการเปลี่ยนแปลงไปในทางใดทางหนึ่ง อาจเป็นในความพยายามที่จะแก้ไขเวลา

รหัส:

<?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;
}

ตัวอย่างบางส่วนของสิ่งที่ส่งคืน:

  • แอฟริกา/แอดดิส_อาบาบา - 1900-01-01T00:00:00+02:27
  • อเมริกา/อาร์เจนตินา/San_Luis - 1900-01-01T00:00:00-04:16
  • อเมริกา/บาเฮีย_แบนเดอราส - 1900-01-01T00:00:00-07:01
  • อเมริกา/เซา_เปาโล - 1900-01-01T00:00:00-03:06
  • เอเชีย/กัวลาลัมเปอร์_ลัมเปอร์ - 1900-01-01T00:00:00+06:46
  • ยุโรป/เอเธนส์ - 1900-01-01T00:00:00+01:34
  • ยุโรป/ดับลิน - 1900-01-01T00:00:00-00:25

ใครช่วยบอกเราทีว่าเกิดอะไรขึ้น??

ขอบคุณ!


person chuckedw    schedule 30.03.2021    source แหล่งที่มา
comment
เวลา(แสตมป์) เริ่มนับเมื่อ 1970-01-01   -  person Markus Zeller    schedule 31.03.2021
comment
@MarkusZeller แม้ว่าฉันไม่คิดว่ามันเกี่ยวข้องกับคำถามนี้โดยตรง แต่ใน PHP การประทับเวลาเป็นตัวเลข 32 หรือ 64 บิตตาม เอกสาร ช่วงที่ถูกต้องของการประทับเวลา โดยทั่วไปคือตั้งแต่วันศุกร์ที่ 13 ธันวาคม 1901 เวลา 20:45:54 น. UTC ถึงวันอังคารที่ 19 มกราคม 2038 เวลา 03:14:07 น. UTC (นี่คือวันที่ที่สอดคล้องกับค่าต่ำสุดและสูงสุดสำหรับจำนวนเต็มที่ลงนามแบบ 32 บิต) เป็นฟังก์ชันอื่น แต่ยังคงเป็นการประทับเวลา   -  person Chris Haas    schedule 31.03.2021
comment
@chuckedw ดังที่ Sammitch กล่าวถึงในคำตอบของพวกเขา เขตเวลาจะจู้จี้จุกจิกมากขึ้นเมื่อคุณกลับไปไกลขึ้น ตัวอย่างเช่น หากคุณมุ่งเน้นไปที่แอฟริกา/Addis_Abada คุณจะพบสิ่งนั้นใน ปี 1936 พวกเขาเปลี่ยน 24 นาที 40 วินาทีไปสู่อนาคต   -  person Chris Haas    schedule 31.03.2021


คำตอบ (1)


เขตเวลานั้นไม่มีความสำคัญเลยจนกระทั่งช่วงปลายศตวรรษที่ 19 และถึงอย่างนั้น มันก็ไม่น่าจะเป็นระบบออฟเซ็ตแบบกลมที่เข้มงวดและใช้เวลาชดเชย 1 ชั่วโมง เว้นแต่คุณจะมีระบบรถไฟขนาดใหญ่ทางภูมิศาสตร์ที่คุณพยายามประสานงาน เช่น สหรัฐฯมี

ท้องที่ส่วนใหญ่เพียงแค่ตั้งเวลาชดเชยตามวันจริงของพวกเขาหรืออะไรก็ตามที่ชดเชยหอดูดาวดาราศาสตร์ที่ใกล้ที่สุดที่ใช้ ดังนั้นการชดเชยที่แปลกประหลาด

กฎเกณฑ์และประวัติที่ควบคุมการจับเวลานั้นกว้างจนน่าสับสน ซับซ้อน และมักเป็นเรื่องเล็กๆ น้อยๆ นี่คือเหตุผลที่เรามีไลบรารีวันที่/เวลาและ /usr/share/zoneinfo พร้อมไฟล์กำหนดค่า 1788

person Sammitch    schedule 30.03.2021
comment
นอกจากนี้ รายการเขตเวลาส่วนใหญ่ใน tzdb จะเริ่มต้นด้วยรายการ LMT ซึ่งแสดงถึง Local Mean เวลา ณ เมืองซึ่งแสดงถึงเขตเวลา สมมติฐานก็คือก่อนเขตเวลาที่บันทึกไว้ ผู้คนที่อาจอยู่ในพื้นที่นั้นปรับแนวคิดเรื่องเวลาให้สอดคล้องกับตำแหน่งของดวงอาทิตย์บนท้องฟ้าเหนือศีรษะ แม้ว่าคุณจะย้อนกลับไปมากพอซึ่งนั่นไม่จริงด้วยซ้ำ เนื่องจากอารยธรรมบางแห่งอาจนึกถึงเวลาในส่วนที่คลุมเครือขนาดใหญ่ เช่น ช่วงเช้าตรู่ ช่วงบ่ายแก่ๆ เป็นต้น คำว่าเที่ยงคืนไม่ได้หมายถึง 00.00 น. เสมอไป - person Matt Johnson-Pint; 31.03.2021