มีเหตุผลใดบ้างที่ใช้วันที่ (1 มกราคม 1970) เป็นมาตรฐานเริ่มต้นสำหรับการปรับเวลา ฉันเคยเห็นมาตรฐานนี้ใน Java และใน Python สองภาษานี้ฉันรู้ มีภาษายอดนิยมอื่น ๆ ที่เป็นไปตามมาตรฐานเดียวกันหรือไม่?
กรุณาอธิบาย
มีเหตุผลใดบ้างที่ใช้วันที่ (1 มกราคม 1970) เป็นมาตรฐานเริ่มต้นสำหรับการปรับเวลา ฉันเคยเห็นมาตรฐานนี้ใน Java และใน Python สองภาษานี้ฉันรู้ มีภาษายอดนิยมอื่น ๆ ที่เป็นไปตามมาตรฐานเดียวกันหรือไม่?
กรุณาอธิบาย
คำตอบ:
มันเป็นมาตรฐานของเวลา Unix
เวลา Unix หรือเวลา POSIX เป็นระบบสำหรับอธิบายจุดในเวลาซึ่งกำหนดเป็นจำนวนวินาทีที่ผ่านไปนับตั้งแต่เที่ยงคืน Proleptic Coordinated Universal Time (UTC) ของวันที่ 1 มกราคม 1970 โดยไม่นับวินาทีอธิกสุรทิน
โดยใช้วันที่ (1 มกราคม 1970) เป็นมาตรฐานเริ่มต้น
คำถามสร้างสมมติฐานเท็จสองข้อ:
เวลาในการใช้คอมพิวเตอร์จะไม่เคยติดตามจากจุดเริ่มต้นของปี 1970 UTC ในขณะที่การอ้างอิงยุคเป็นที่นิยม, สภาพแวดล้อมการประมวลต่าง ๆ ในช่วงทศวรรษที่ผ่านมาได้ใช้เวลาอย่างน้อยเกือบสองโหล epochs บางส่วนมาจากศตวรรษอื่น ๆ มีตั้งแต่ปี 0 (ศูนย์) ถึงปี 2544
นี่คือบางส่วน
0 มกราคม 1 ปีก่อนคริสตกาล
1 มกราคม ค.ศ. 1
15 ตุลาคม 1582
1 มกราคม 1601
31 ธันวาคม พ.ศ. 2383
17 พฤศจิกายน 2401
30 ธันวาคม พ.ศ. 2442
31 ธันวาคม พ.ศ. 2442
1 มกราคม 1900
1 มกราคม 2447
31 ธันวาคม 2510
1 มกราคม 2523
6 มกราคม 2523
1 มกราคม 2543
1 มกราคม 2544
จุดเริ่มต้นของปี 1970 เป็นที่นิยมอาจเป็นเพราะการใช้ Unix แต่ไม่ได้เป็นที่โดดเด่น ตัวอย่างเช่น:
January 0, 1900
(31 ธันวาคม 2442)1 January 2001, GMT
ของJanuary 6, 1980
ในขณะที่ยุโรปทางเลือกที่กาลิเลโอ22 August 1999
ใช้สมมติว่าการนับตั้งแต่ยุคที่ใช้ Unix epoch กำลังเปิดช่องโหว่ขนาดใหญ่สำหรับจุดบกพร่อง การนับจำนวนดังกล่าวเป็นไปไม่ได้ที่มนุษย์จะถอดรหัสได้ทันทีดังนั้นข้อผิดพลาดหรือปัญหาจะไม่ถูกตั้งค่าสถานะโดยง่ายเมื่อทำการดีบักและบันทึก ปัญหาอีกประการหนึ่งคือความไม่ชัดเจนของรายละเอียดที่อธิบายไว้ด้านล่าง
ฉันขอแนะนำอย่างยิ่งให้จัดลำดับค่าวันที่ - เวลาให้เป็นสตริงISO 8601 ที่ไม่คลุมเครือสำหรับการแลกเปลี่ยนข้อมูลแทนที่จะเป็นจำนวนเต็มนับตั้งแต่ยุค: YYYY-MM-DDTHH:MM:SS.SSSZ
เช่น2014-10-14T16:32:41.018Z
.
ปัญหาอีกประการหนึ่งเกี่ยวกับการติดตามเวลานับตั้งแต่ยุคคือหน่วยเวลาที่มีการใช้ความละเอียดอย่างน้อยสี่ระดับ
เหตุใดจึงเป็นวันที่ 1 มกราคม 1970 เสมอเนื่องจาก - '1 มกราคม 1970' มักเรียกว่า "epoch date" คือวันที่เวลาเริ่มต้นสำหรับคอมพิวเตอร์ Unix และการประทับเวลานั้นถูกทำเครื่องหมายเป็น '0' เวลาใด ๆ นับจากวันนั้นจะคำนวณตามจำนวนวินาทีที่ผ่านไป พูดง่ายๆคือ ... การประทับเวลาของวันใด ๆ จะแตกต่างกันเป็นวินาทีระหว่างวันที่นั้นกับ '1 มกราคม 1970' การประทับเวลาเป็นเพียงจำนวนเต็มซึ่งเริ่มจากเลข '0' ใน 'เที่ยงคืน 1 มกราคม 1970' และเพิ่มขึ้นเรื่อย ๆ โดย '1' เป็นแต่ละวินาทีสำหรับการแปลงการประทับเวลา UNIX เป็นวันที่ที่อ่านได้ PHP และภาษาโอเพ่นซอร์สอื่น ๆ มีฟังก์ชันในตัว
มีเหตุผลใดบ้างที่ใช้วันที่ (1 มกราคม 1970) เป็นมาตรฐานในการกำหนดเวลา
ไม่มีเหตุผลที่สำคัญ
time
โมดูลของ Python คือไลบรารี C ถาม Ken Thompson ว่าทำไมเขาถึงเลือกวันนั้นเป็นวันที่ epochal อาจจะเป็นวันเกิดของใครบางคน
Excel ใช้สองยุคที่แตกต่างกัน สาเหตุใดที่ทำให้ excel เวอร์ชันต่างๆใช้วันที่ต่างกัน
ยกเว้นโปรแกรมเมอร์ตัวจริงไม่มีใครรู้ว่าทำไมถึงตัดสินใจแบบนั้น
และ...
ไม่สำคัญว่าทำไมถึงเลือกวันที่ มันเป็นเพียง
นักดาราศาสตร์ใช้วันที่ epochal ของตนเอง: http://en.wikipedia.org/wiki/Epoch_(astronomy)
ทำไม? ต้องเลือกวันที่เพื่อให้คณิตศาสตร์ออกมาดี วันที่สุ่มใด ๆ จะทำงาน
วันที่ในอดีตหลีกเลี่ยงตัวเลขติดลบสำหรับกรณีทั่วไป
บางส่วนของแพ็คเกจที่ฉลาดกว่านั้นใช้ proleptic Gregorian year 1 เหตุผลใดที่ทำให้ปี 1?
มีเหตุผลที่ระบุไว้ในหนังสือเช่นการคำนวณแบบปฏิทิน: มันง่ายกว่าทางคณิตศาสตร์เล็กน้อย
แต่ถ้าคุณลองคิดดูความแตกต่างระหว่าง 1/1/1 และ 1/1/1970 คือแค่ปี 1969 ซึ่งเป็นค่าชดเชยทางคณิตศาสตร์เล็กน้อย
1 มกราคม 1970 12:00:00 เป็นจุดศูนย์ของเวลา POSIX
ถาม) "เหตุใดจึงคำนวณวันที่ตั้งแต่วันที่ 1 มกราคม 1970"
A)ต้องเป็นข้อมูลล่าสุดเท่าที่จะเป็นไปได้ แต่รวมถึงอดีตบางส่วน ส่วนใหญ่ไม่มีเหตุผลอื่นใดที่สำคัญเนื่องจากผู้คนจำนวนมากรู้สึกแบบนั้น
พวกเขารู้ว่ามันก่อให้เกิดปัญหาหากพวกเขาวางมันไว้ในอดีตมากเกินไปและพวกเขารู้ว่ามันให้ผลลัพธ์เชิงลบหากเป็นในอนาคต ไม่จำเป็นต้องเจาะลึกลงไปในอดีตเนื่องจากเหตุการณ์ต่างๆมักจะเกิดขึ้นในอนาคต
หมายเหตุ: ใน ทางกลับกันชาวมายันมีความจำเป็นที่จะต้องวางเหตุการณ์ต่างๆลงในอดีตเนื่องจากพวกเขามีความรู้เกี่ยวกับอดีตมากมายซึ่งพวกเขาสร้างปฏิทินระยะยาว เพียงเพื่อวางปรากฏการณ์ประจำวันทั้งหมดไว้บนปฏิทิน
การประทับเวลาไม่ได้หมายถึงปฏิทิน แต่เป็นยุค และฉันเชื่อว่าชาวมายันสร้างปฏิทินระยะยาวโดยใช้มุมมองเดียวกันนั้น (หมายความว่าพวกเขารู้ดีว่าพวกเขาไม่ได้มีความสัมพันธ์ใด ๆ กับอดีตพวกเขาจำเป็นต้องเห็นมันในระดับที่ใหญ่ขึ้น)
ใช่ C (และครอบครัว) นี่คือจุดที่ Java เอาไปด้วย