Windows vs Linux เวลาท้องถิ่นหรือไม่


40

ตั้งแต่ฉันเริ่มใช้ Linux ใน dualboot กับ Windows ฉันสังเกตว่าเมื่อฉันรีบูตเครื่องเวลาในระบบปฏิบัติการอื่นผิดเช่นมันคือ 12:00 บน Linux จากนั้นฉันเริ่มระบบใหม่และบน Windows เป็นเวลา 18:00 น. และ เมื่อฉันตรวจสอบไบออส RTC ถูกตั้งค่าเป็น 18:00 เนื่องจากเขตเวลาของฉันคือ -06: 00 CST ฉันถือว่า Linux ตั้งค่าเวลาของ RTC เป็น UTC และคำนวณเวลาตามโซนเวลาอีกครั้งในขณะที่ Windows เพิ่งตั้งค่า RTC เป็นเวลาท้องถิ่น ทั้งสองใช้เซิร์ฟเวอร์ NTP เดียวกันเพื่อซิงค์เวลา

คำถามคือสิ่งที่หนึ่งกำลังทำสิ่งที่ถูกต้อง? ฉันควรตั้งค่าเขตเวลาใดให้เป็น UTC เพื่อให้มีเวลาที่เหมาะสมสำหรับทั้งคู่



คำถามข้างเคียง: เหตุใดจึงไม่เกิดขึ้นกับ Windows และ Linux เวอร์ชันเก่า
golimar

คำตอบ:


16

ไม่ผิด แต่การใช้ UTC นั้นถูกต้องกว่า RTC ไม่มีเขตเวลา มันเป็นเพียงนาฬิกาแขวนใบ้ หากเขตเวลาท้องถิ่นของคุณให้เกียรติ DST (ซึ่งมีหลายรสชาติและกฎเกณฑ์เปลี่ยนไปตามอำเภอใจ) จากนั้นสองครั้งต่อปีคุณต้องไปและเปลี่ยนมัน ระบบปฏิบัติการจะทำเพื่อคุณ แต่ถ้า RTC เป็น UTC ระบบปฏิบัติการจะทำการแปล UTC-> ท้องถิ่นต่อไป - ทำไมซอกับนาฬิกา? นอกจากนี้ในช่วงการเปลี่ยนภาพ DST "ถอยกลับ" RTC ไม่สามารถบอกคุณได้ว่ามันคือเวลาใด! มันเป็น 1:30 น. CDT หรือ CST ไหม

เห็นได้ชัดว่าWindows 8 รองรับ UTCสำหรับ RTC Windows 7 นอกจากนี้ยังได้ แต่มีปัญหา

มีข้อโต้แย้งที่ดีกว่าในกรณีนี้เมื่อผู้คนตั้งค่านาฬิกา BIOS ด้วยตนเอง แต่เวลาที่ใช้เซิร์ฟเวอร์นั้นแพร่หลายมากขึ้นในตอนนี้


68

ฉันเพิ่งประสบปัญหาเดียวกันและนี่คือวิธีที่ฉันแก้ไข คุณต้องทำการเปลี่ยนแปลงเล็กน้อยในทั้งสองระบบปฏิบัติการ

ฉันเริ่มต้นด้วย Linux ก่อน รันคำสั่งต่อไปนี้เป็นรูท

ntpdate pool.ntp.org

การดำเนินการนี้จะอัปเดตเวลาของคุณหากตั้งไม่ถูกต้อง

ตอนนี้ตั้งนาฬิกาฮาร์ดแวร์เป็น UTC ด้วยคำสั่งนี้

hwclock --systohc --utc

แหล่ง

ตอนนี้เริ่มระบบ Windows และเพิ่มรีจิสตรีต่อไปนี้ เพียงแค่สร้างไฟล์. reg โดยใช้รหัสด้านล่างใน Notepad บันทึกและเรียกใช้

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation]
"RealTimeIsUniversal"=dword:00000001

แหล่ง

ตั้งแต่การบู๊ตครั้งต่อไประบบปฏิบัติการทั้งสองจะแสดงเวลาที่ถูกต้องให้คุณ


6
เอกสารคำตอบที่ดีที่สุดพร้อมคำแนะนำที่เป็นรูปธรรม! +1
agtoever

1
ควรรวมถึงการปรับแต่งรีจิสทรีใน Windows รุ่นใด
Tanath

2
Windows ได้รับความสามารถในการทำความเข้าใจกับนาฬิการะบบที่เก็บเวลาอื่นนอกเหนือจากในเครื่องเมื่อใด
Mark

1
การปรับแต่งรีจิสตรีนี้ใช้ได้กับ Windows XP / Vista / 7/8 / 8.1 @Tanath
Ayan

3
@ Mark ใน Windows XP
Michael Hampton

4

กรณีปกติคือระบบ Linux มีการตั้งค่า RTC (นาฬิกาเรียลไทม์) เป็น UTC และการแปลงเป็นเวลาท้องถิ่นจะทำใน userspace ตามข้อมูลโซนเวลาและTZตัวแปรสภาพแวดล้อม นี่คือ "ไม่ดีน้อยกว่า" เพราะมันทำให้ระบบ RTC เพิ่มขึ้นอย่างต่อเนื่องซ้ำซากและใช้เวทย์มนตร์ของเขตเวลาใด ๆ ในภายหลังเพื่อให้มั่นใจว่าไม่มีไฟล์ใดที่จะมีการประทับเวลาในอนาคต (ซึ่งอาจเกิดขึ้นได้อย่างน้อยปีละครั้ง) ระบบ RTC ถูกตั้งค่าเป็นเวลาท้องถิ่น) ดังที่เคนชี้ให้เห็น RTC นั้นไม่มีแนวคิดเรื่องเขตเวลาเพียงช่วงเวลาเดียว

ดังที่คุณพบสิ่งนี้ทำให้เกิดปัญหาเมื่อการบูทสองครั้งกับระบบที่ไม่ได้ใช้งานตามปกติเช่นตระกูลระบบปฏิบัติการ Microsoft ซึ่งโดยทั่วไปคาดว่า RTC จะตั้งเวลาท้องถิ่น ใช่ Windows NT (ฉันคิดว่าจะย้อนกลับไปที่ NT 4 จริง ๆ ) สามารถทำงานกับ RTC ที่ตั้งค่าเป็น UTC ได้ แต่อย่างน้อยสุดท้ายฉันก็พบว่ามันไม่ใช่การกำหนดค่าที่รองรับจริงและมีข้อแม้มากมาย

ทางออกที่ง่ายในกรณีของคุณน่าจะตั้ง RTC เป็นเวลาท้องถิ่นบอกระบบ Linux ของคุณว่า RTC ตั้งเวลาท้องถิ่น (กลไกที่แน่นอนของการทำเช่นนี้แตกต่างกันไปตามรุ่นและรุ่นวางจำหน่าย แต่เห็นได้ชัดใน Ubuntu ที่คุณตั้งUTC=no/ etc / default / rcS ) จากนั้นกำหนดค่าระบบปฏิบัติการให้มีเพียงหนึ่งในนั้น (โดยเฉพาะอย่างยิ่งระบบที่คุณใช้บ่อยที่สุดเนื่องจากเวลาที่แสดงในรายการอื่น ๆ ทั้งหมดจะไม่ถูกต้องปีละสองครั้งจนกระทั่งมันถูกบูทและมีโอกาส เพื่อแก้ไข) จัดการการเปลี่ยนแปลงการปรับเวลาตามฤดูกาล และใช้ชีวิตอยู่กับข้อเสียที่ควรจัดการด้วยระบบผู้ใช้คนเดียว

คุณสามารถตั้งค่าฝั่ง Windows ให้ใช้ UTC เป็นเขตเวลาและปิดการเปลี่ยนแปลงการปรับเวลาตามฤดูกาลโดยอัตโนมัติใน Windows และให้ Linux ตั้งค่าให้ RTC เป็น UTC และแสดงเวลาที่แปลงตามแนวทางปฏิบัติ อย่างไรก็ตามสิ่งนี้จะทำให้ Windows แสดงวันที่และเวลาใน UTC ซึ่งอาจไม่ใช่สิ่งที่คุณต้องการ มันไม่ใช่ปัญหาใหญ่สำหรับเราชาวยุโรปซึ่งเป็นอย่างมากเช่นสามชั่วโมงจาก UTC แต่อาจมีปัญหามากกว่านี้ในสหรัฐอเมริกา นี่เป็นตัวเลือกที่สมจริงกว่าหากคุณใช้ Windows เป็นครั้งคราวเท่านั้นและระบบปฏิบัติการหลักของคุณคือ Linux หรือระบบปฏิบัติการอื่น ๆ ที่รู้จัก RTC-UTC


คุณมีข้อมูลใด ๆ เกี่ยวกับ "มันไม่ได้รองรับการกำหนดค่าจริง ๆ และมีจำนวน caveats"
Random832

@ Random832 ให้ฉันดูว่าฉันสามารถหาที่ ฉันรู้ว่าฉันเคยเห็นมาก่อน แต่ตอนนี้ดูเหมือนจะหาไม่เจอด้วยการค้นหา google อย่างน้อย
CVn

2

หากคุณบูตคู่และมีเวลาขัดแย้งกันระหว่าง Windows และ Ubuntu สิ่งนี้จะเกิดขึ้นเนื่องจาก Ubuntu เก็บเวลาไว้ในนาฬิกาฮาร์ดแวร์เป็น UTC โดยค่าเริ่มต้นในขณะที่ Microsoft Windows จะเก็บเวลาตามเวลาท้องถิ่นดังนั้นจึงทำให้เกิดความขัดแย้งกันระหว่าง Ubuntu และ Windows

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


มันใช้เวลาท้องถิ่นและฉันรู้ว่าจริง ๆ แล้วมันเก็บเวลาเป็น UTC (ถ้าคุณอ่านคำถามอย่างน้อย) และฉันรู้ว่าฉันจะแก้ไขปัญหานี้ได้อย่างไรคำถามคือสิ่งที่ถูกต้อง เปลี่ยนอีกตัวแทน
arielnmz

ตามค่าเริ่มต้น Windows จะใช้เวลาโลคัล Mac OS ใช้ UTC และระบบปฏิบัติการคล้าย UNIX แตกต่างกันไป ระบบปฏิบัติการที่ใช้มาตรฐาน UTC โดยทั่วไปจะพิจารณาเวลา CMOS (นาฬิกาฮาร์ดแวร์) เวลา UTC (GMT, เวลากรีนนิช) และทำการปรับเปลี่ยนในขณะที่ตั้งเวลาของระบบในการบู๊ตตามโซนเวลาของคุณ

อีกครั้งฉันก็รู้ว่าฉันแค่อยากรู้ว่าระบบปฏิบัติการใดทำถูกต้องดังนั้นฉันสามารถตั้งค่าเขตเวลา windows เป็น UTC และแก้ไขสิ่งนี้หรือแก้ไขวิธีอื่น ๆ
arielnmz

@MagomedSegaIsmailov Mac OS ทำงานบนระบบที่ใช้ BIOS RTC หรือไม่? ฉันคิดว่า EFI ให้ความมีสติ
Random832

0

ฉันกำลังบูทคู่กับ windows 10 และรีมิกซ์ระบบปฏิบัติการและเพียงทำตามคำแนะนำสำหรับ windows ที่ได้ผลสำหรับฉันทั้งสองครั้งนั้นถูกต้อง ฉันใช้บรรทัดคำสั่งเพื่อเพิ่มสคริปต์ของคุณเพราะมันง่ายขึ้น


โปรดอย่าเพิ่ม "ขอบคุณ" เป็นคำตอบ ลงทุนเวลาในไซต์และคุณจะได้รับสิทธิ์ที่เพียงพอในการถอนคำตอบที่คุณชอบซึ่งเป็นวิธีที่ผู้ใช้ระดับสูงในการพูดขอบคุณ
DavidPostill
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.