ไทย

เครื่องมือสำหรับนักพัฒนา · ตัวแปลงการประทับเวลา Unix

เหตุใดเวลา Unix จึงเริ่มต้นในวันที่ 1 มกราคม 1970: ประวัติโดยย่อของยุค

· พื้นหลัง

การประทับเวลา เวลายูนิกซ์ ข้อมูลรูปแบบ

ไทม์ไลน์ที่แผ่จากจุดศูนย์ในยุค Unix
ภาพประกอบเวกเตอร์ต้นฉบับ ToolAcre

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

วันที่ไม่มีใครเฉลิมฉลอง — ทำไม 1970 ยังคงปรากฏในข้อบกพร่อง ค่าเริ่มต้น และแดชบอร์ดในครึ่งศตวรรษต่อมา

มกราคม 1970 จะปรากฏขึ้นเมื่อใดก็ตามที่ซอฟต์แวร์เกิดข้อผิดพลาด ระยะเวลาหรือวินาทีเล็กน้อยนับเป็นมิลลิวินาที ไม่ใช่วันเกิดทางเลือกที่สร้างโดย ToolAcre; มันเป็นจุดศูนย์ที่อินพุตถูกตีความ การทดสอบสำหรับยุคศูนย์จะส่งกลับ `1970-01-01T00:00:00.000Z` และวันพฤหัสบดี

การเห็นวันนั้นจึงเป็นการวินิจฉัย ค่าใกล้ศูนย์ สนามที่หายไปถูกบังคับให้เป็นศูนย์ หรือมาตราส่วนที่ไม่ตรงกันทั้งหมดสามารถลงจอดในบริเวณใกล้เคียงได้ จับค่าดิบก่อนที่จะตำหนิการจัดรูปแบบ ผลลัพธ์ของปฏิทินแสดงเลขคณิตที่ได้รับ

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

นาฬิกาแรกของ Unix — นับหกสิบวินาทีจากจุดเริ่มต้นของ 1971 และห้อง 32-บิตหมดภายในเวลาไม่ถึงสามปี

คู่มือนี้ได้ให้รายละเอียดเกี่ยวกับนาฬิกาต้นๆ นับหกสิบจาก 1971 ไม่มีแหล่งเก็บข้อมูลที่จำเป็นบันทึกประวัตินั้น การทำซ้ำจากหน่วยความจำจะเป็นการละเมิดสัญญาการเขียนแม้ว่าประวัติภายนอกอาจสนับสนุนในภายหลังก็ตาม

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

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

ToolAcre ตั้งชื่อการประทับเวลา Unix อินพุตและกำหนดตามคำแนะนำข้อผิดพลาดเป็นวินาทีหรือมิลลิวินาทีตั้งแต่ 1970-01-01 UTC แหล่งที่มาไม่ได้อธิบายว่าเหตุใดจึงเลือกปีนั้น ไม่ว่าความกลมจะมีความสำคัญหรือนักออกแบบเส้นขอบฟ้าคนใดต้องการ แรงจูงใจเหล่านั้นยังคงละเลย

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

ความแตกต่างนี้ทำให้แบบแผนและผลที่ตามมาแยกจากกัน ซอฟต์แวร์สามารถพึ่งพาผลลัพธ์ที่ตามมาได้อย่างมั่นใจ ในขณะที่นักประวัติศาสตร์ยังคงประเมินหลักฐานเกี่ยวกับที่มาของอนุสัญญาต่อไป

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

การทดสอบจำลองทุกวันตามที่ Conversion POSIX ทำ และกระโดดจาก `2016-12-31T23:59:59Z` ไปเป็น `2017-01-01T00:00:00Z` อย่างชัดเจน นั่นคือหลักฐานที่สามารถดำเนินการได้สำหรับพฤติกรรมของเครื่องมือนี้ ไม่ใช่การอ้างอิงถ้อยคำหรือขอบเขตทั้งหมดของมาตรฐานภายนอกใดๆ

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

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

ToolAcre ทดสอบโมเดลสไตล์ POSIX แต่ไม่ได้ใช้เป็นการอ้างอิงมาตรฐาน

JavaScript วันที่แสดงถึงการนับยุคในหน่วยมิลลิวินาที ในขณะที่ ToolAcre ยอมรับวินาทีของ Unix และแปลงโดยการคูณด้วย 1,000 เส้นทางยังส่งคืนทั้งสองรูปแบบด้วย ขอบเขตดังกล่าวอธิบายว่าทำไมเว็บแอปพลิเคชันจึงเปิดเผย Instant เดียวกันโดยมีศูนย์ทศนิยมเพิ่มอีกสามตัว

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

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

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

ยุคคงที่ไม่มีโซนท้องถิ่น ToolAcre จัดรูปแบบวันที่ผลลัพธ์เป็น UTC และแยกกันในโซนท้องถิ่นของเบราว์เซอร์ ค่าลบจะขยายก่อนศูนย์ ดังที่การทดสอบ −1 แสดงให้เห็น ผลที่ตามมาเหล่านั้นตามมาโดยตรงจากแกนตัวเลขและเลเยอร์การจัดรูปแบบ

การใช้งานยังมีช่วงวันที่ ±8.64×10¹⁵ มิลลิวินาที นั่นคือขีดจำกัดของการเป็นตัวแทนที่เลือก ไม่ใช่ขีดจำกัดที่มีอยู่ในแนวคิดเชิงนามธรรมของยุคสมัย ระบุเสมอว่าช่วงและหน่วยของใครที่กำลังถูกกล่าวถึงก่อนที่จะสรุปจากผลลัพธ์ของตัวแปลง

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

สิ่งนี้ไม่ครอบคลุมถึงยุคของระบบอื่นๆ เช่น 1900, 1601 และ 1980 ซึ่งมีประวัติของตัวเอง

ระบบอื่นสามารถเลือกศูนย์และสเกลอื่นได้ ซึ่งเป็นสาเหตุที่จำนวนเต็มขนาดใหญ่อาจยังคงไม่มีความหมายภายใต้หน่วย ToolAcre ทั้งสอง บทความนี้ไม่ได้เล่าประวัติของต้นกำเนิด 1900, 1601 หรือ 1980 บทความ 340 มุ่งเน้นไปที่การรับรู้ว่าไม่ตรงกันและได้มาซึ่ง Conversion จากคำจำกัดความที่บันทึกไว้แทน

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

ต้นกำเนิดยุคอื่นๆ มีการเปรียบเทียบแยกกันโดยไม่อ้างประวัติที่นี่

บทเรียนที่เชื่อถือได้นั้นเป็นแบบกลไก: Unix จะแมปเป็นศูนย์จนถึงจุดเริ่มต้นของ 1970 UTC สัญญาณจะขยายออกไปรอบๆ และวินาทีจะกลายเป็น JavaScript มิลลิวินาทีก่อนการจัดรูปแบบ Date ToolAcre ทำให้ข้อเท็จจริงแต่ละข้อสามารถสังเกตได้ด้วยค่า 0, −1 และตารางยุคที่โดดเด่น

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

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