ไทย

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

ไม่ใช่ทุกยุคสมัยที่เป็น 1970: NTP, Windows FILETIME, GPS และวันที่ของ Excel

· พื้นหลัง

การประทับเวลา ข้อมูลรูปแบบ การดีบัก

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

ต้นกำเนิด 1970 ของ Unix เป็นเพียงหนึ่งในหลาย ๆ โพสต์นี้สำรวจยุคที่คุณจะพบในไฟล์และโปรโตคอล (1900, 1601, 1904, 1980, 2001) และแสดงวิธีจดจำค่าที่ไม่เคยเป็นเวลา Unix เลย

การประทับเวลาที่เข้าสู่ 1900 — ค่าจากการดักจับเครือข่ายที่ไม่มีตัวเลือกหน่วยใดที่สมเหตุสมผล

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

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

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

NTP และ 1900 — วินาทีนับตั้งแต่ 1900-01-01 ด้วยเศษส่วน 32 บิต และ 2036 แบบโรลโอเวอร์ที่นำมา

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

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

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

NTP รายละเอียดการแปลงและลักษณะการทำงานแบบโรลโอเวอร์จำเป็นต้องมีเอกสารต้นฉบับที่ไม่มีอยู่ที่นี่

ในทำนองเดียวกัน ตัวนับ Windows ที่มีชื่อและ .NET ก็ไม่ได้รับการยอมรับโหมด พื้นที่เก็บข้อมูลไม่มีค่าคงที่สำหรับต้นกำเนิดหรือสเกลเห็บ ค่าทศนิยมขนาดใหญ่อาจเกินช่วงจำนวนเต็มที่แน่นอนของ JavaScript ก่อนที่นักพัฒนาจะพยายามแปลง

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

การทดสอบแบบไปกลับควรรวมค่าที่มีตัวเลขย่อยวินาทีที่ไม่ใช่ศูนย์ การแข่งขันทั้งวินาทีไม่สามารถเปิดเผยได้ว่าส่วนที่เหลือของ 100-นาโนวินาทีหรือมิลลิวินาทีจะถูกรักษาไว้อย่างถูกต้องหรือไม่

คำจำกัดความ FILETIME และ .NET ไม่ได้ถูกนำมาใช้โดย ToolAcre และไม่ได้ถูกยืนยันจากหน่วยความจำ

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

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

การตั้งค่าเวิร์กบุ๊กสามารถเดินทางไปพร้อมกับไฟล์ได้ ดังนั้นซีเรียลที่มีลักษณะคล้ายกันสองรายการจึงอาจใช้ที่มาที่แตกต่างกัน การแปลงจะอยู่ที่ขอบเขตเอกสารซึ่งมีข้อมูลเมตานั้นอยู่

ระบบอนุกรมและลักษณะเฉพาะของสเปรดชีตจำเป็นต้องมีหลักฐานเฉพาะสเปรดชีต

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

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

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

GPS และความสัมพันธ์ในยุค Apple จำเป็นต้องมีแหล่งข้อมูลที่เชื่อถือได้นอกโมดูลนี้

วิธีการทำงานที่สามารถป้องกันได้เริ่มต้นด้วยช่วงเวลาที่ทราบ เช่น ToolAcre ที่ได้รับการยืนยันของ `2025-02-03T10:23:00.000Z` เท่ากับ 1,738,578,180 Unix วินาที สำหรับยุคอื่นที่บันทึกไว้ ให้คำนวณค่าโดยใช้จุดเริ่มต้นและมาตราส่วนอย่างเป็นทางการของระบบนั้นด้วยเลขคณิตจำนวนเต็ม จากนั้นแปลงกลับโดยใช้คำจำกัดความเดียวกัน

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

วิธีการทำงาน: รับหนึ่งช่วงเวลาข้ามยุคที่จัดทำเป็นเอกสาร แทนที่จะเผยแพร่ค่าคงที่ที่ไม่ได้รับการยืนยัน

ToolAcre ไม่จดจำหรือแปลงยุคต่างประเทศโดยอัตโนมัติ เมนูหน่วยระบุวินาทีและมิลลิวินาที ทั้งคู่อยู่ภายใต้คำจำกัดความของ Unix ในการกำหนดค่า การตรวจจับอัตโนมัติจะเลือกเฉพาะระหว่างขนาดเหล่านั้นที่มีขนาด 10¹¹; มันไม่เคยเปลี่ยนจุดศูนย์

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

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

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

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

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

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