วิธีเปลี่ยนการตั้งค่าเขตเวลาจากบรรทัดคำสั่ง


221

ฉันมีเครื่องเสมือนที่ตั้งค่าเป็นPSTซึ่งเพื่อนร่วมงานสองคนมีในเขตเวลาที่แตกต่างกัน

หากฉันต้องการเปลี่ยนเขตเวลาเป็นESTและGMTฉันต้องทำอย่างไร

คำตอบ:


288

ใช้ timedatectl

sudo timedatectl set-timezone <timeszone>

ตัวอย่าง:

  • เขตเวลาเป็น EST

    sudo timedatectl set-timezone EST
    
  • เขตเวลาเป็น UTC

    sudo timedatectl set-timezone UTC
    
  • รายการเขตเวลาที่ถูกต้องทั้งหมด

    timedatectl list-timezones
    

คำสั่งนี้เป็นที่สมบูรณ์แบบสำหรับสคริปต์อัตโนมัติเพราะมันไม่จำเป็นต้องมีการโต้ตอบกับผู้ใช้ในขณะที่เมื่อเทียบกับคำตอบที่ได้รับการอื่น ๆ dpkg-reconfigure tzdataตาม


1
ไม่ใช่แฟนของความคิดเห็น +1 แต่กำลังวางไว้ที่นี่เพราะสิ่งนี้ได้ผลกับฉันในวิธีที่ดีที่สุด ฉันต้องการเครื่องมือบรรทัดคำสั่งบรรทัดเดียวหนึ่งเดียวที่จะเปลี่ยนเขตเวลาแทนที่จะต้องการเปิดทั้งเมนูหรือโปรแกรม gui (ฉันไม่รู้tzdataว่ามันทำงานอย่างไร แต่ฉันไม่ต้องการสิ่งนี้ คำสั่งหนึ่งบรรทัด) ขอบคุณ!
Phil Ryan

ทำงานเหมือนจับใจ;)
user332660

ที่น่าสนใจคือมันกำลังทำบางสิ่งที่แตกต่างจาก tzdata เล็กน้อย ฉันมีปัญหากับเวลา Java แตกต่างจากเวลาระบบหลังจากใช้โปรแกรมปะแก้ Tzdata ไม่สามารถแก้ไขปัญหาได้
Daniel Bower

1
สิ่งนี้ไม่ได้ผลสำหรับฉัน อย่างไรก็ตามdpkg-reconfigureการหลอกลวงได้
Antti Haapala

14.04.4 เซิร์ฟเวอร์อูบุนตู
Antti Haapala

40

ในฐานะที่เป็น root คุณต้องดำเนินการ:

dpkg-reconfigure tzdata

เครื่องมือที่ใช้เมนูควรเริ่มต้นที่ช่วยให้คุณเปลี่ยนเขตเวลา


32

ต่อไปนี้ยังใช้งานได้ สำหรับ GMT:

ln -sf /usr/share/zoneinfo/GMT /etc/localtime

สำหรับ EST:

ln -sf /usr/share/zoneinfo/EST /etc/localtime

8
ฉันคิดว่าจะเป็นการดีกว่าถ้าจะเชื่อมโยงไฟล์เมืองหนึ่งไฟล์แทนที่จะเป็น GMT หรือ EST เพราะจะติดตามเวลาออมแสงในขณะที่การเชื่อมโยง (เช่น) GMT จะไม่เปลี่ยนเวลาของระบบเพื่อสะท้อนเมื่อมีการออมแสงในเวลากลางวัน ในเมืองของคุณ เช่น:ln -sf /usr/share/zoneinfo/Europe/London /etc/localtime
Asfand Qazi

นี่คือสิ่งที่ดีที่สุด
Hasan Tıngır

16

วิธีที่ง่ายที่สุดโดยเฉพาะกับเซิร์ฟเวอร์คือการระบุเขตเวลา:

timedatectl list-timezones

และเลือกของคุณตัวอย่างเช่น:

timedatectl set-timezone Europe/Athens

แค่นั้นแหละ! , :-)


6

หากต้องการเรียกใช้โปรแกรมหนึ่งที่มีการตั้งค่าเขตเวลาที่แตกต่างกันให้ตั้งค่าTZตัวแปรสภาพแวดล้อมเช่นเรียกใช้TZ=Pacific/Kiritimati dateเพื่อดูเวลาที่อยู่บนเกาะคริสต์มาสหรือexport TZ=Pacific/Kiritimatiตั้งค่าล่าสุดสำหรับเซสชันเชลล์


6

แก้ไขtimezoneไฟล์ที่/etcโฟลเดอร์เป็น:

Etc/GMT

คุณสามารถใช้รูปแบบถัดไป:

Region "/" City 

ตัวอย่างของ/etc/timezone:

Europe/Athens

หรือ

Europe/Paris
Europe/London

คุณสามารถทดลองกับ: dpkg-reconfigure tzdata และตรวจสอบ cat ไฟล์เขตเวลา

คุณต้องรีบูตหรือเริ่มบริการอีกครั้ง (ไม่ใช่บริการ ntp) ฉันไม่รู้ว่าอันไหน หากใครรู้โปรดแบ่งปันกับเรา (ทดสอบบน Ubuntu 15.10 การเปลี่ยนแปลงจะนำมาพิจารณาทันที)


4
cp -p /usr/share/zoneinfo/US/Pacific /etc/localtime

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

เพียงคัดลอกไฟล์ Pacific ไปที่ไฟล์ localtime ด้วยคำสั่งด้านบน


มันใช้งานได้จริงสำหรับฉัน ฉันคิดว่ามีข้อผิดพลาดบางอย่างกับ Docker, ansible (?) ทั้ง timedatectl และ dpkg-reconfigure tzdata ล้มเหลวสำหรับฉัน หลังจากที่ฉันคัดลอกโซนเวลาเปลี่ยนจาก EST เป็น PDT
Sun

2

ฉันใช้สคริปต์ต่อไปนี้เพื่อขอให้ผู้ใช้ตั้งค่าเขตเวลาจากนั้นยืนยันว่าได้มีการตั้งค่าไว้แน่นอน:

#!/bin/sh
sudo timedatectl set-timezone $(tzselect)
echo
echo timedatectl says:
timedatectl

tz-setผมเรียกมันว่า


0

ในฐานะที่เป็น root คุณต้องดำเนินการ:

ln -fs /usr/share/zoneinfo/Europe/Warsaw /etc/localtime && dpkg-reconfigure --frontend noninteractive tzdata


โปรดอธิบายว่าคำสั่งนี้ทำงานอย่างไรเพื่อเปลี่ยนเขตเวลา
Parto

0

สิ่งนี้ใช้ได้กับฉันใน GCP Ubuntu 14 ผ่าน SSH

  1. sudo su
  2. cp /usr/share/zoneinfo/Asia/Singapore /etc/localtime
  3. รีสตาร์ทเซิร์ฟเวอร์
  4. เสร็จสิ้น
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.