เวลา Unix คืออะไรและเมื่อใดคือยุค Unix?

เวลา Unix คืออะไรและเมื่อใดคือยุค Unix?

ทำไม Unix ถึงมีแนวคิดเรื่องเวลาเป็นของตัวเอง? ยุคคืออะไรและปัญหา Y2038 คืออะไร?





เวลา Unix เป็นวิธีการแสดงวันที่และเวลาที่ระบุซึ่งใช้โดย Linux, macOS และระบบที่ทำงานร่วมกันอื่น ๆ อีกมากมาย มันแพร่หลายมากจนคุณอาจใช้มันโดยไม่รู้ตัว เมื่อคุณเข้าใจเวลา Unix แล้ว คุณจะมองเห็นได้ในหลายบริบท เครื่องมือหลายอย่างสามารถช่วยให้คุณทำงานกับ Unix time ได้





จุดประสงค์ของเวลา Unix คืออะไร?

เวลา Unix คือจำนวนวินาทีทั้งหมดนับตั้งแต่วันที่และเวลาที่กำหนด เป็นรูปแบบวันที่/เวลา (หรือประทับเวลา) ที่ดูแตกต่างจากวันที่และเวลาที่มนุษย์อ่านได้ที่เราคุ้นเคย นี่เป็นเพียงเหตุผลด้านประสิทธิภาพเท่านั้น ใช้พื้นที่น้อยกว่ามากในการจัดเก็บตัวเลขเดี่ยวที่แทนวินาทีมากกว่าการเก็บค่าแยกสำหรับปี เดือน ชั่วโมง ฯลฯ





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

รูปแบบนี้แทบจะเป็นไปไม่ได้เลยที่จะแปลในหัวของคุณ เว้นแต่คุณจะเป็นอัจฉริยะทางคณิตศาสตร์ แต่ก็ยังมีข้อดีเหนือทางเลือกอื่นที่อ่านง่ายกว่าเช่น วันพุธที่ 21 ต.ค. 2558 07:28:00 GMT . คุณสามารถสั่งซื้อการประทับเวลา Unix สองรายการได้อย่างง่ายดายเพียงชำเลืองมอง โดยปกติแล้ว การหาความแตกต่างระหว่างการประทับเวลาสองครั้งมักจะเร็วกว่าด้วย โดยเฉพาะอย่างยิ่งในวันที่อยู่ใกล้กัน เช่น วันที่ติดกัน



เกี่ยวกับ ยุค

ดังนั้น เวลา Unix คือการนับรวมของวินาทีตั้งแต่จุดใดเวลาหนึ่ง แต่เวลานั้นคืออะไร? มันคือ 00:00:00 UTC บน 1 มกราคม 2513 . ซึ่งมักเรียกกันว่ายุค Unix โปรแกรมเมอร์เลือกวันที่นี้สำหรับยุคตามความสะดวก เนื่องจากเป็นวันที่ที่ใกล้เคียงที่สุดเมื่อพวกเขาคิดค้นเวลา Unix

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





วิธีสร้างบัญชีเฟสบุ๊คแบบไม่ระบุชื่อ

รูปแบบข้อมูล Unix Time

พูดอย่างเคร่งครัดไม่มี ชนิดข้อมูลดั้งเดิมเป็นจำนวนเต็ม 32 บิต และมักจะเป็นเช่นนี้ แม้จะอยู่ในระบบที่ทรงพลังกว่ามาก

ชนิดข้อมูลนี้ช่วยให้ค่าสามารถเก็บได้ทั้งหมด 2^32 วินาที ซึ่งมีอายุเพียง 136 ปีเท่านั้น โดยทั่วไปค่านี้จะมีการลงนาม ซึ่งหมายความว่าค่านี้สามารถเป็นค่าลบหรือค่าบวกได้ ดังนั้นมักจะหมายถึง 68 ปีทั้งสองด้านของยุค เช่น 1902-2038





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

แต่นั่นไม่ได้หมายความว่าช่วงเวลาที่จำกัดนี้จะไม่มีปัญหา...

ปัญหาปี 2038

Y2K Bug (หนึ่งในข้อผิดพลาดในการเขียนโปรแกรมที่เลวร้ายที่สุดในประวัติศาสตร์) ส่งผลกระทบต่อระบบคอมพิวเตอร์ที่จัดเก็บปีเป็นค่าสองหลัก เมื่อถึงปี 2543 ระบบดังกล่าวปฏิบัติต่อราวกับว่าเป็นปี 1900 ในกรณีนี้ เหตุการณ์นี้ไม่ได้เลวร้ายอย่างที่กลัว เพราะคนส่วนใหญ่ใช้เวลาและความพยายามอย่างมากในการเตรียมการล่วงหน้า

หากคุณให้ความสนใจในส่วนก่อนหน้านี้ คุณอาจพบปัญหาที่คล้ายกันซึ่งอาจส่งผลต่อเวลา Unix เวลา Unix มีปัญหาข้อมูลของตัวเอง: ปัญหา Y2k38 (มักเรียกกันว่าปัญหา ไม่ใช่ข้อบกพร่อง บางทีเราอาจมองโลกในแง่ดีมากขึ้นตั้งแต่ปี 2000!) เมื่อเวลา Unix หมดลงในปี 2038 ระบบจะถือว่าวันที่ใหม่เป็นปี 1902 หรือ 1970 หรืออาจเป็นได้ จะล้มเหลวโดยสิ้นเชิง

อย่างน้อยปัญหานี้จะไม่กระทบกระเทือนเราตอนเที่ยงคืนของวันส่งท้ายปีเก่า วินาทีสุดท้ายของเวลา Unix แบบ 32 บิตจะตกในวันที่ 19 มีนาคม ในท้ายที่สุด เราอาจจะทำการอัพเกรดระบบส่วนใหญ่ภายในปี 2038 มิฉะนั้นระบบจะล้าสมัยในตอนนั้น

แหล่งข้อมูลการประทับเวลาที่มีประโยชน์บางส่วน

NS ตัวแปลงยุค ไซต์อาจเป็นตัวแปลงการประทับเวลาที่ครอบคลุมที่สุด เริ่มต้นด้วยการแสดงเวลา Unix ปัจจุบันแบบเรียลไทม์ และเพิ่มคุณสมบัติเกือบทุกอย่างเท่าที่จะจินตนาการได้ การใช้งานหลักคือการแปลงระหว่างการประทับเวลาและวันที่ที่มนุษย์อ่านได้ในทั้งสองทิศทาง

Dan's Tools เป็นคอลเล็กชั่นเว็บแอปที่มีประโยชน์มากมาย หนึ่งในนั้นคือ a ตัวแปลงการประทับเวลา . เป็นพื้นฐานมากกว่า แต่มีการนำเสนอที่สะอาดตาและใช้งานง่าย

Time.is นำเสนอรูปลักษณ์ที่เรียบง่ายยิ่งขึ้นไปอีก แสดงเวลาในรูปแบบต่างๆ รวมทั้งเวลา Unix รวมถึงเวลาปัจจุบันในชื่อหน้าซึ่งเป็นประโยชน์

การใช้ Unix Time กับเครื่องมือบรรทัดคำสั่ง

บน Linux และ macOS ตัว วันที่ โปรแกรมเป็นยูทิลิตี้หลักสำหรับจัดการกับวันที่/เวลา รวมถึงการประทับเวลา Unix เรียกโดยไม่มีอาร์กิวเมนต์ จะส่งกลับวันที่/เวลาปัจจุบันในรูปแบบที่มนุษย์อ่านได้:

$ date
Wed Feb 10 12:28:30 GMT 2021

หากคุณต้องการวันที่/เวลาปัจจุบันในเวลา Unix ให้ใช้ +%s การโต้แย้ง:

$ date +%s
1612960114

คุณสามารถแปลงจากวันที่ที่มนุษย์อ่านได้เป็นการประทับเวลาโดยใช้ -NS ตั้งค่าสถานะถ้าเวอร์ชันของคุณของ วันที่ สนับสนุนมัน เวอร์ชัน Linux ส่วนใหญ่ควรเป็นค่าเริ่มต้น:

$ date -d 'Jan 2 1970' +%s
82800

บน macOS วันที่ เป็นโปรแกรมอื่น ซึ่งต้องใช้แฟล็กชุดอื่น:

$ date -j -f '%b %d %Y %T' 'Jan 02 1970 00:00:00' '+%s'
82800

ในอีกทางหนึ่ง คุณสามารถแปลงจากการประทับเวลา Unix โดยใช้ -NS ธง:

$ date -r 1600000000
Sun 13 Sep 2020 13:26:40 BST

โปรแกรมอื่นบางโปรแกรมใช้ %NS รูปแบบเพื่อจัดการกับเวลา Unix ตัวอย่างเช่น หากคุณต้องการแสดงวันที่แก้ไขของไฟล์ในเวลา Unix ด้วยเครื่องหมาย เวอร์ชันลินุกซ์ของ ลส คุณสามารถใช้สิ่งต่อไปนี้:

$ ls -l --time-style=+%s index.tmp.html
-rw-r--r-- 1 ubuntu ubuntu 17862 1521649818 index.tmp.html

วิธีใช้เวลา Unix ในภาษาการเขียนโปรแกรม

PHP มี เวลา() ฟังก์ชั่นที่ส่งคืนการประทับเวลา Unix ปัจจุบัน มันคือ วันที่() ฟังก์ชั่นใช้เวลาประทับเป็นอาร์กิวเมนต์ที่สอง:

$ php -r 'echo date('Y-m-d', time());'
2021-02-11

JavaScript เข้าใกล้สิ่งต่าง ๆ อย่างน่าสนใจ มันมี วันที่ตอนนี้ () วิธีรับจำนวนมิลลิวินาทีตั้งแต่ยุค Unix แน่นอน คุณสามารถหารด้วย 1,000 และปัดเศษผลลัพธ์เพื่อให้ได้เวลา Unix ที่เท่ากันในหน่วยวินาที:

> Math.floor(Date.now() / 1000)
1613083012

ทำความเข้าใจกับ Unix Time

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

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

แบ่งปัน แบ่งปัน ทวีต อีเมล 9 คำสั่งพื้นฐานเพื่อเริ่มต้นใช้งาน Linux

ต้องการทำความคุ้นเคยกับ Linux หรือไม่? เริ่มต้นด้วยคำสั่ง Linux พื้นฐานเหล่านี้เพื่อเรียนรู้งานคอมพิวเตอร์มาตรฐาน

อ่านต่อไป
หัวข้อที่เกี่ยวข้อง เกี่ยวกับผู้เขียน Bobby Jack(58 บทความเผยแพร่)

Bobby เป็นผู้ที่ชื่นชอบเทคโนโลยีซึ่งทำงานเป็นนักพัฒนาซอฟต์แวร์มาเกือบสองทศวรรษ เขาหลงใหลในการเล่นเกม ทำงานเป็นบรรณาธิการบทวิจารณ์ที่ Switch Player Magazine และหมกมุ่นอยู่กับทุกแง่มุมของการเผยแพร่ออนไลน์และการพัฒนาเว็บ

เพิ่มเติมจาก Bobby Jack

สมัครรับจดหมายข่าวของเรา

เข้าร่วมจดหมายข่าวของเราสำหรับเคล็ดลับทางเทคนิค บทวิจารณ์ eBook ฟรี และดีลพิเศษ!

คลิกที่นี่เพื่อสมัครสมาชิก