กี่โมงแล้ว ระบบของเราแสดง คำนวณ จัดรูปแบบ และซิงโครไนซ์วันที่และเวลาอย่างไร
ฟังดูเหมือนคำถามง่ายๆ แต่คุณจะแปลกใจว่าโครงสร้างพื้นฐานที่ซับซ้อนช่วยให้คุณมีเวลาที่แม่นยำได้อย่างไร เมื่อผู้ใช้ของคุณอยู่ในเขตเวลาหรือแม้แต่เดินทางข้ามเขตเวลาในขณะที่ใช้ระบบของคุณ มีความคาดหวังว่าทุกอย่างจะทำงานได้อย่างราบรื่น
แต่มันไม่ง่ายเลย
ตัวอย่าง: คุณมีพนักงานในฟีนิกซ์ที่ต้องการกำหนดเวลาส่งอีเมลให้กับบริษัทของเขาในลอสแอนเจลิสในวันจันทร์เวลา 8 น. ฟีนิกซ์ไม่ปรับเวลาออมแสง ลอสแอนเจลิสทำ แล้วผู้รับล่ะ? พวกเขาควรได้รับอีเมลเวลา 00 น. ของวันจันทร์ตามเขตเวลาของตนหรือไม่ หรือสมาชิกในนิวยอร์กจะได้รับอีเมลเวลา 8 น. EST ในวันจันทร์
วิธีแสดงเวลาบนคอมพิวเตอร์ของคุณ
- ระบบปฏิบัติการ (OS) – ระบบปฏิบัติการของคุณค้นหาเวลาจากนาฬิกาตามเวลาจริง (RTC). โดยจะปรับรูปแบบของวันที่สำหรับสถานที่ของคุณและเวลาสำหรับเขตเวลาที่เหมาะสม ซึ่งโดยทั่วไปจะกำหนดโดยตำแหน่งของอุปกรณ์ของคุณ
- รูปแบบวันที่ – มีรูปแบบวันที่ทั่วไปหลายแบบ ได้แก่:
- วันที่ในปฏิทินเกรกอเรียน (YYYY-MM-DD) เช่น 2022-02-08
- วันที่แบบสหรัฐอเมริกา (MM/DD/YYYY) เช่น 02/08/2022
- วันที่แบบยุโรป (วว/ดด/ปปปป) เช่น 08/02/2022
- โซนเวลา – ในโลกมี 24 โซนเวลา โดยแต่ละโซนมีลองจิจูดประมาณ 15 องศา แยกจากกัน เขตเวลาแบ่งโลกออกเป็นภูมิภาคโดยมีเวลามาตรฐานเดียวกัน เพื่อให้ผู้คนในแต่ละเขตเวลาสามารถมีเวลาร่วมกันสำหรับกิจกรรมประจำวันของตนได้
- เวลาออมแสง – ในภูมิภาคที่ใช้การปรับเวลาตามฤดูกาล นาฬิกาจะเดินไปข้างหน้า XNUMX ชั่วโมงในฤดูใบไม้ผลิ และถอยหลัง XNUMX ชั่วโมงในฤดูใบไม้ร่วง ส่งผลให้มีแสงแดดเพิ่มขึ้นหนึ่งชั่วโมงในตอนเย็นในช่วงฤดูร้อน แต่ก็หมายความว่าดวงอาทิตย์ขึ้นและตกเร็วขึ้นหนึ่งชั่วโมงในช่วงเช้าและเย็น ตามลำดับ ในช่วงฤดูหนาว
- รูปแบบวันที่ – มีรูปแบบวันที่ทั่วไปหลายแบบ ได้แก่:
- นาฬิกาแบบ Real-Time (RTC) – คอมพิวเตอร์ของคุณจะรักษาเวลาไว้ แม้ในขณะที่ปิดอยู่ โดยใช้ชิปที่เรียกว่า RTC เมื่อไม่ได้จ่ายไฟ แบตเตอรี่ลิเธียมขนาดเล็กจะทำให้ชิปทำงานต่อไป (ตั้งใจไว้ว่าเล่น) และสามารถจ่ายไฟได้นานถึงหนึ่งทศวรรษโดยไม่ต้องชาร์จ
- โปรโตคอลเวลาเครือข่าย (NTP) – เมื่อระบบปฏิบัติการเชื่อมต่อกับอินเทอร์เน็ตเรียบร้อยแล้ว พวกเขาจะใช้ NTP เพื่อซิงโครไนซ์นาฬิกากับกลุ่มเซิร์ฟเวอร์เวลา รวมถึงเซิร์ฟเวอร์ที่ให้บริการโดย โปรโตคอลเวลาเครือข่าย. ตามค่าเริ่มต้น Windows จะซิงโครไนซ์กับเซิร์ฟเวอร์ NTP ทุกๆ 7 วัน ในขณะที่ macOS จะซิงโครไนซ์ทุกๆ ชั่วโมง NTP รักษาเวลาโดยใช้เวลาสากลเชิงพิกัด (UTC). เมื่อไคลเอนต์ร้องขอเวลาปัจจุบันจากเซิร์ฟเวอร์ NTP เซิร์ฟเวอร์จะตอบกลับด้วยค่า 64 บิตซึ่งแสดงถึงจำนวนวินาทีตั้งแต่วันที่ 1 มกราคม 1900 เวลา 00:00:00 UTC
- Coordinated Universal Time (UTC) – เวลามาตรฐานที่ใช้เป็นพื้นฐานสำหรับการบอกเวลาทั้งหมดในโลก ขึ้นอยู่กับเวลาอะตอมสากล (TAI) ซึ่งวัดเวลาเฉลี่ยที่ผ่านไประหว่างจุดเฉพาะสองจุดในวงโคจรของดวงจันทร์โลก UTC ถูกนำมาใช้ครั้งแรกในปี 1972 โดยเป็นผู้สืบทอดต่อจาก TAI และเวลามาตรฐานกรีนิช (GMT). UTC ถูกรักษาไว้ภายใน 0.9 วินาทีของมาตราส่วนเวลา TAI และคงความแม่นยำไว้โดยการใช้นาฬิกาอะตอมและเทคโนโลยีการบอกเวลาอื่นๆ
- 24 โซนเวลา UTC แบ่งออกเป็น ชดเชย หมวดหมู่ที่แต่ละ offset คือการปรับเวลาที่เหมาะสมเป็นชั่วโมง: UTC-12, UTC-11, UTC-10, UTC-9, UTC-8, UTC-7, UTC-6, UTC-5, UTC-4, UTC-3, UTC-2, UTC-1, UTC, UTC+1, UTC+2, UTC+3, UTC+4, UTC+5, UTC+6, UTC+7, UTC+8, UTC+9, UTC+10 และ UTC+11
- เวลาปรมาณูสากล (TAI) – มาตรฐานเวลาที่อิงตามเวลาเฉลี่ยที่ผ่านไประหว่างจุดเฉพาะสองจุดในวงโคจรของดวงจันทร์ของโลก TAI เป็นหนึ่งในมาตราส่วนเวลาที่แม่นยำและเสถียรที่สุด และได้รับการดูแลโดย สำนักงานชั่งตวงวัดระหว่างประเทศ.
- นาฬิกาปรมาณู – เป็นเครื่องบอกเวลาที่มีความแม่นยำสูงซึ่งใช้การสั่นสะเทือนตามธรรมชาติของอะตอมในการวัดเวลา นาฬิกาอะตอมชนิดที่พบมากที่สุดคือนาฬิกาอะตอมซีเซียม ซึ่งใช้การสั่นของอะตอมซีเซียมในการจับเวลา ความแม่นยำของนาฬิกาอะตอมนั้นคงไว้โดยความเสถียรของความถี่ของรังสีแม่เหล็กไฟฟ้าที่ปล่อยออกมาจากอะตอมซีเซียม ความถี่นี้เสถียรมากจนเปลี่ยนแปลงเพียงเสี้ยววินาทีในช่วงเวลาหลายพันปี ความถี่ของรังสีแม่เหล็กไฟฟ้าจะถูกเปรียบเทียบกับออสซิลเลเตอร์แบบควอตซ์ซึ่งใช้ในการควบคุมตัวนับ ตัวนับจะนับจำนวนรอบของรังสีแม่เหล็กไฟฟ้า และการนับนี้จะใช้ในการคำนวณเวลา ตัวนับได้รับการแก้ไขอย่างต่อเนื่องเพื่อให้แน่ใจว่ายังคงซิงค์กับการสั่นสะเทือนของอะตอมซีเซียม
ระบบสมัยใหม่มักจะบันทึกเวลาเป็น Unix Timestamps Unix Timestamp เป็นการแสดงตัวเลขของจุดเวลาที่ระบุ โดยวัดเป็นจำนวนวินาทีที่ผ่านไปตั้งแต่วันที่ 1 มกราคม 1970 เวลา 00:00:00 UTC Unix Timestamps ถูกใช้อย่างแพร่หลายในระบบคอมพิวเตอร์เนื่องจากง่ายต่อการใช้งานและสามารถเปรียบเทียบ จัดเรียง และจัดการได้ง่าย นอกจากนี้ยังไม่ขึ้นกับเขตเวลา ซึ่งหมายความว่าเป็นการแสดงเวลาที่เป็นมาตรฐานซึ่งสามารถใช้ได้ในภูมิภาคต่างๆ ทางภูมิศาสตร์
ดังนั้น… เมื่อคุณตรวจสอบเวลา คุณกำลังแสดง
การทำงานกับวันที่ใน PHP
ผมเคยเขียนเกี่ยวกับวิธีการ โปรแกรมแสดงปีสำหรับการประกาศลิขสิทธิ์ของคุณ จะได้ไม่ต้องอัพเดททุกปี มีอีกมากมายที่คุณสามารถทำได้ด้วยการออกเดท นี่คือตัวอย่างบางส่วน:
แสดงวันที่เป็น 2023-02-08:
$current_date = date("Y-m-d");
echo $current_date;
แสดงวันที่เป็นแบบประทับเวลา 1612684800:
$timestamp = strtotime("2023-02-08");
echo $timestamp;
แสดงวันที่และเวลาในรูปแบบ UTC แทนโซนเวลาท้องถิ่นเป็น 2023-02-08 15:25:00:
$utc_date = gmdate("Y-m-d H:i:s");
echo $utc_date;
แสดงการประทับเวลา Unix ปัจจุบันเป็น 1612742153:
$current_timestamp = time();
echo $current_timestamp;
ตั้งค่าเขตเวลาเริ่มต้นเป็น Los Angeles จากนั้นแสดงวันที่และเวลาเป็น 2023-02-08 07:25:00:
date_default_timezone_set("America/Los_Angeles");
$date = date("Y-m-d H:i:s");
echo $date;
การจัดระเบียบอักขระรูปแบบวันที่ของ PHP ออกเป็นกลุ่มเชิงตรรกะ โดยแต่ละกลุ่มตามลำดับตัวอักษรและจัดรูปแบบอักขระเป็นสัญลักษณ์ย่อย:
- วัน
d
– วันของเดือน 2 หลักโดยมีศูนย์นำหน้า (01 ถึง 31) ตัวอย่าง:15
D
– การแสดงข้อความของวัน ตัวอักษรสามตัว (จันทร์ถึงอาทิตย์) ตัวอย่าง:Thu
j
– วันของเดือนโดยไม่มีศูนย์นำหน้า (1 ถึง 31) ตัวอย่าง:15
l
(ตัวพิมพ์เล็ก 'L') – ข้อความแสดงวันในสัปดาห์แบบเต็ม (วันอาทิตย์ถึงวันเสาร์) ตัวอย่าง:Thursday
S
– ส่วนต่อท้ายลำดับภาษาอังกฤษสำหรับวันของเดือน 2 ตัวอักษร (st, nd, rd หรือ th) ตัวอย่าง:th
w
– การแสดงตัวเลขของวันในสัปดาห์ (0 (สำหรับวันอาทิตย์) ถึง 6 (สำหรับวันเสาร์)) ตัวอย่าง:4
z
– วันของปี (เริ่มจาก 0) ตัวอย่างวันที่ปัจจุบันอาจไม่ถูกต้องหากไม่มีการคำนวณที่แน่นอน
- เดือน
F
– การแสดงข้อความแบบเต็มของเดือน (มกราคมถึงธันวาคม) ตัวอย่าง:February
m
– ตัวเลขแสดงเดือน โดยมีศูนย์นำหน้า (01 ถึง 12) ตัวอย่าง:02
M
– ข้อความสั้นๆ ของเดือน สามตัวอักษร (ม.ค. ถึง ธ.ค.) ตัวอย่าง:Feb
n
– การแสดงตัวเลขของเดือนโดยไม่มีศูนย์นำหน้า (1 ถึง 12) ตัวอย่าง:2
t
– จำนวนวันในเดือนที่กำหนด (28 ถึง 31) ตัวอย่าง:28
- สัปดาห์
W
– หมายเลขสัปดาห์ของปี ISO-8601 สัปดาห์ที่เริ่มต้นในวันจันทร์ (ตัวอย่าง: 42 สัปดาห์ที่ 42 ของปี) ตัวอย่างวันที่ปัจจุบันอาจไม่ถูกต้องหากไม่มีการคำนวณที่แน่นอน
- ปี
o
– ISO-8601 ปีเลขสัปดาห์ ซึ่งมีค่าเหมือนกับ Y ยกเว้นว่าหากหมายเลขสัปดาห์ ISO (W) เป็นของปีก่อนหน้าหรือปีถัดไป ระบบจะใช้ปีนั้นแทน ตัวอย่าง:2024
Y
– การแสดงตัวเลขเต็มปี 4 หลัก ตัวอย่าง:2024
y
– การแสดงปีเป็นตัวเลขสองหลัก ตัวอย่าง:24
- เขตเวลา
T
– ตัวย่อเขตเวลา ตัวอย่าง:EST
e
– ตัวระบุเขตเวลา ตัวอย่าง:America/New_York
P
– ความแตกต่างจากเวลากรีนิช (GMT) โดยมีเครื่องหมายทวิภาคระหว่างชั่วโมงและนาที ตัวอย่าง:-04:00
O
– ความแตกต่างกับเวลากรีนิช (GMT) โดยไม่มีเครื่องหมายทวิภาคระหว่างชั่วโมงและนาที ตัวอย่าง:-0400
Z
– ชดเชยเขตเวลาเป็นวินาที ค่าชดเชยสำหรับเขตเวลาทางตะวันตกของ UTC จะเป็นค่าลบเสมอ และสำหรับเขตเวลาทางตะวันออกของ UTC จะเป็นค่าบวกเสมอ ตัวอย่าง:-14400 (for EST)
ทุกภาษามีฟังก์ชันในการทำงานกับ UTC การประทับเวลา รูปแบบการแสดงผล โซนเวลา และเวลาออมแสง หากคุณกำลังพัฒนาแพลตฟอร์ม คุณจะต้องให้ความสนใจเป็นอย่างมากกับวิธีการจัดเก็บข้อมูลตามเวลา ตลอดจนวิธีการจัดรูปแบบและการแสดงข้อมูลดังกล่าว หากคุณเป็นธุรกิจ คุณจะต้องแน่ใจว่าแพลตฟอร์มของคุณสามารถจัดการการทำงานข้ามโซนเวลา แสดงรูปแบบที่เหมาะสมสำหรับผู้ใช้ของคุณ รวมถึงจัดการการปรับเวลาออมแสงได้
ดังนั้น… กี่โมงแล้ว?
ระบบปฏิบัติการของฉันกำลังฟอร์แมตวันที่และเวลาเป็น 18 มี.ค. 2024, 10:47 น. เวลาได้รับการปรับจากการประทับเวลา Unix ไปยังเขตเวลาของฉัน ปรับเป็นเวลาออมแสง เวลาดังกล่าวได้รับการซิงโครไนซ์ในชั่วโมงที่ผ่านมาจาก MacOS กับเซิร์ฟเวอร์ NTP ที่อยู่ใน UTC และปรับให้คงไว้ภายใน 0.9 วินาทีด้วย TAI และนาฬิกาอะตอม แน่นอนว่าทั้งหมดนี้เป็นเวลาที่แม่นยำสำหรับตำแหน่งของฉันซึ่งเกี่ยวข้องกับโลก ดวงจันทร์ และดวงอาทิตย์... ปรับเป็นเวลาออมแสง