Câu hỏi Đặt múi giờ từ thiết bị đầu cuối


Tôi muốn thay đổi múi giờ của đồng hồ hệ thống từ thiết bị đầu cuối.

Điều này có thể được thực hiện với

tzselect

"mở một gui trong terminal"

hoặc là

sudo cp /usr/share/zoneinfo/Europe/London /etc/localtime

"sẽ được đặt thành gmt"

Nhưng có cách nào để thiết lập múi giờ với chỉ là bù đắp ie.-1 hoặc +5 vv?

Tôi cần phải làm điều này khi tôi đang viết một ứng dụng để điều chỉnh các bản ghi thời gian hoặc báo cáo và thông tin duy nhất tôi có là IP của người dùng. Tôi có thể sử dụng một webapp để tìm vị trí của IP, nhưng sau đó tôi cần phải thiết lập bù đắp mà sẽ dễ dàng NẾU tôi chỉ có thể có được bù đắp của vị trí, nhưng nếu tôi cần tìm khu vực và thành phố nó sẽ là một nỗi đau thực sự .

Nếu có ai biết câu trả lời cho cách thiết lập đồng hồ hệ thống với +/- giờ sẽ là tuyệt vời.


174
2017-07-22 20:22


gốc


Vui lòng giúp chúng tôi nhận câu trả lời được chấp nhận. Tôi nghĩ rằng câu trả lời của Mitch là tốt nhất askubuntu.com/a/323163/22308 - Nam G VU
@NamGVU Không, Mitch không phải là giải pháp tốt nhất, nó là một "GUI trong một thiết bị đầu cuối" câu trả lời. Ngay cả OP nói "Điều này sẽ không làm việc như tôi cần phải altr múi giờ từ một chương trình mà không cần người dùng đầu vào tôi cần một lệnh tôi có thể ăn vào thiết bị đầu cuối không gui giải pháp"và đó cũng chính là mục tiêu mà hầu hết mọi người muốn khi tìm kiếm "giải pháp thiết bị đầu cuối", một giải pháp thân thiện với kịch bản. Collin Anderson's tốt hơn nếu bạn biết một thành phố, hoặc Ryan's cho đồng bằng GMT + -n - Xen2050


Các câu trả lời:


Để thay đổi múi giờ từ thiết bị đầu cuối, chỉ cần nhấn Ctrl+Alt+T trên bàn phím để mở Terminal. Khi nó mở ra, hãy chạy (các) lệnh dưới đây:

sudo dpkg-reconfigure tzdata

Sau khi mở, chỉ cần làm theo các màn hình để thay đổi múi giờ.


274
2017-07-22 22:02



Đây là phương pháp dễ nhất, dễ gây đau nhất. - Thomas Ward♦
điều này sẽ không làm việc như tôi cần phải altr múi giờ từ một chương trình mà không cần người dùng đầu vào tôi cần một lệnh tôi có thể ăn vào thiết bị đầu cuối không gui giải pháp nhờ trả lời - user2155009
@ user2155009 rất dễ dàng không-GUI hoàn toàn dựa trên giải pháp dựa trên là trong Câu trả lời của Collin Anderson. Tôi không hiểu tại sao bất cứ ai sẽ đưa ra một câu trả lời GUI cho một câu hỏi Terminal. Nếu chúng ta muốn sử dụng một GUI, chúng ta sẽ sử dụng GUI anyway, không khởi chạy Terminal từ GUI, sau đó khởi chạy GUI từ Terminal ... - ADTC
cám ơn!!! điều này giúp, byt tôi đã thay đổi bằng tay v.v. / múi giờ =) thích php.net/manual/en/timezones.php !!! hoàn toàn giống nhau !!! - Vladimir Ch
@ADTC Chính xác suy nghĩ của tôi, bị bỏ rơi vì lý do đó. - Elijah Lynn


Bạn cũng có thể sử dụng timedatectl để đặt thời gian ở mức 14.04.

sudo timedatectl set-timezone America/New_York

141
2017-09-15 15:43



Làm thế nào để bạn cài đặt nó trên ubuntu? - Division by Zero
Nó được cài đặt theo mặc định trên 14.04. - Collin Anderson
Để xem tất cả các tùy chọn có sẵn, bạn có thể chạy ls -R --group-directories-first /usr/share/zoneinfo. (Hãy cẩn thận không sửa đổi hoặc xóa bất kỳ tệp nào ở đây.) Thông tin thêm về posix và right tiền tố là đây. - ADTC
Những công việc này! ... - Dan Nissenbaum
Sử dụng sudo timedatectl set-timezone Etc/UTC cho UTC. - Zoltán


Bạn có thể sử dụng GMT ±x tệp trong /usr/share/zoneinfo/Etc.

sudo ln -fs /usr/share/zoneinfo/Etc/GMT$offset /etc/localtime

17
2017-07-22 20:43



cảm ơn allot cho trả lời im nhận được một lỗi ln: thất bại để tạo liên kết tượng trưng `/ etc / localtime ': File tồn tại oboiusly im không chắc chắn những gì im làm bạn biết hướng dẫn tốt cho điều này hoặc thậm chí một số từ khóa tôi có thể google cảm ơn am i sử dụng lệnh đúng cách? im sử dụng sudo ln / usr / share / zoneinfo / Etc / GMT $ + 1 / etc / localtime để đặt đồng hồ thành + 1gmt - user2155009
minitech quên cờ hiệu lực tôi đoán vậy -> sudo ln -sf .... - Tele
Điều này sẽ kinda làm việc, nhưng sẽ không cập nhật tên tz trong /etc/timezone. - poolie


Tôi nhận thấy thread này là một chút ngày, nhưng tôi đã tìm kiếm một giải pháp tốt hơn bởi vì tôi cần thiết để tự động thiết lập múi giờ trong một máy ảo sau khi người dùng tải nó từ trang web của chúng tôi và triển khai nó. Đây là những gì tôi đã kết thúc với:

echo "Setting TimeZone..."
export tz=`wget -qO - http://geoip.ubuntu.com/lookup | sed -n -e 's/.*<TimeZone>\(.*\)<\/TimeZone>.*/\1/p'` &&  timedatectl set-timezone $tz
export tz=`timedatectl status| grep Timezone | awk '{print $2}'`
echo "TimeZone set to $tz"

Điều này sẽ truy vấn geoip.ubuntu.com từ máy chủ khi nó được bắt đầu trên mạng mới (kịch bản của tôi kiểm tra kết nối khóa học đầu tiên) và sau đó đặt múi giờ của máy chủ dựa trên phản hồi.

"Wget-q0 -" báo cho wget chỉ xuất các kết quả tới stdout, sau đó được chuyển tới biến $ tz.

Hy vọng nó sẽ giúp một ai đó!


16
2017-12-25 03:22



Tuyệt quá! Trên Ubuntu 16.04, nó phải là "grep zone" và "print $ 3" ​​thay thế. - user334639
Tôi đề nghị một cli khác nhau để nhận múi giờ. Một chút sạch hơn trong quan điểm của tôi: curl -s 'geoip.ubuntu.com/lookup '; | xmllint --xpath '/ Response / TimeZone / text ()' - - Darko Miletic


TL; DR  /etc/localtime là một liên kết tượng trưng trỏ đến một tệp trong /usr/share/zoneinfo/Continent/City. Bằng cách thay đổi vị trí của nó, bạn có thể thay đổi múi giờ của mình.

Để thay đổi múi giờ, hãy xóa /etc/localtime và gán liên kết tượng trưng cho thành phố bạn muốn. Ví dụ, ls -l /etc/localtime báo cáo rằng tệp này trỏ tới /usr/share/zoneinfo/America/Denver. Để đổi thành New York, tôi

  1. sudo rm /etc/localtime
  2. sudo ln -s /usr/share/zoneinfo/America/New_York /etc/localtime
  3. Đợi một chút để đồng hồ của tôi được cập nhật

Ảnh chụp màn hình dưới đây cho thấy các bước và xác nhận từ timedatectl

enter image description here


10
2018-05-06 02:21



thật tuyệt khi hiểu điều gì đang xảy ra phía sau bức màn, nhưng bạn có nghĩ rằng sẽ tốt hơn nếu đề xuất các công cụ được chỉ định cho điều này như dpkg-reconfigure tzdata, v.v ...? - Patrick Cornelissen
@PatrickCornelissen Trước hết, có câu trả lời cho tzdata đã, vì vậy cho thấy điều tương tự là vô nghĩa. Thứ hai, tzdata cũng khá giống nhau. Tùy thuộc vào người dùng để quyết định những gì họ thích, vì vậy nó không tốt hơn cũng không tệ hơn - chỉ là sở thích của một người. - Sergiy Kolodyazhnyy
Vâng, làm việc "chống lại" các công cụ phân phối thường dẫn đến các vấn đề, vì vậy tôi muốn tránh cách tiếp cận của bạn nếu có thể, nhưng đủ công bằng giải pháp của bạn sẽ làm việc (hiện tại) - Patrick Cornelissen
Giải pháp này như tôi hiểu, hoạt động trên các bản phân phối khác nhau. Nhưng vẫn cần có cơ sở dữ liệu múi giờ có sẵn trong thư mục / usr / share / zoneinfo. Có cách nào để có được cơ sở dữ liệu múi giờ mà không cần cài đặt gói tzdata không? - andho
@andho Từ /var/lib/dpkg/info/tzdata.list cho thấy rằng tất cả các mục trong /usr/share/zoneinfo đi kèm với gói đó, tôi sẽ giả sử bạn cần cài đặt gói để có tất cả các mục, nhưng thẳng thắn tôi không hoàn toàn chắc chắn, cộng với không khá quen thuộc với cách làm việc này trên các bản phân phối khác. Cân nhắc đặt câu hỏi này như một câu hỏi trên Unix và Linuxvà vui lòng tham khảo bài đăng này nếu bạn muốn cung cấp ngữ cảnh cho câu hỏi. - Sergiy Kolodyazhnyy


Cách dễ dàng để cập nhật múi giờ là sử dụng sudo dpkg-reconfigure tzdata. Nhưng điều này không dễ dàng như vậy.

Nếu bạn muốn đặt múi giờ một cách rõ ràng thông qua tập lệnh (ví dụ: để thiết lập máy ảo), đây là công thức:

Đặt biến cho múi giờ bạn muốn, ví dụ: một trong

tz=Europe/London
tz=America/Anchorage
tz=Etc/GMT+6

Các giá trị hợp lệ là các thư mục và tên tệp dưới /usr/share/zoneinfo.

Vậy thì đơn giản

sudo cp -vf /usr/share/zoneinfo/$tz /etc/localtime
echo $tz | sudo tee /etc/timezone

Lưu ý rằng cả hai /etc/localtime và /etc/timezone phải nhất quán.

Có thể bây giờ khởi động lại để có được tất cả các dịch vụ của bạn được cập nhật quá (ví dụ cron).


10
2018-05-13 18:13



-1: Không bao giờ sử dụng cp để đặt / etc / localtime. / etc / localtime là một liên kết tượng trưng vào đúng tệp. Nếu bạn dùng cp để thay đổi nó, bạn sẽ thực sự ghi đè nội dung của bất kỳ tệp tzdata nào đang trỏ đến, vì vậy đột nhiên (ví dụ) tệp tzdata UTC chứa dữ liệu múi giờ cho Châu Âu / Luân Đôn thay vì UTC, điều này rất tệ (và gây phiền toái để khắc phục sự cố, như tôi có thể nói từ kinh nghiệm cá nhân) - Foogod


Đây là phương pháp tôi sử dụng, là trung tâm của Hoa Kỳ vì tôi không cần phải lo lắng về múi giờ không phải của Hoa Kỳ.

Nếu tôi cần xác định múi giờ hiện tại, tôi có thể:

cat /etc/timezone  

hoặc là

sudo hwclock --show  

Sau đó tôi làm:

timedatectl set-timezone <_designation_>

Ở đâu <_designation_> là một trong những điều sau đây:

Hoa Kỳ / Miền Đông
Hoa Kỳ / Miền Trung
Hoa Kỳ / Núi
Hoa Kỳ / Thái Bình Dương
Hoa Kỳ / Alaska
US / Aleutian
Hoa Kỳ / Arizona
Hoa Kỳ / Đông-Indiana
Hoa Kỳ / Hawaii
US / Indiana-Starke
Hoa Kỳ / Michigan
Hoa Kỳ / Thái Bình Dương-Mới
Hoa Kỳ / Samoa

VÍ DỤ.:

timedatectl set-timezone US/Eastern  

Bạn có thể tìm thấy các chỉ định múi giờ khác tại đây: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones


3
2018-03-29 19:04





Bạn không thể làm điều này trừ khi bạn chọn tệp múi giờ bạn muốn tương ứng với từng khoảng thời gian bù đắp.

Một số câu trả lời được đề xuất sử dụng các tệp trong / usr / share / zoneinfo / Etc, nhưng vấn đề với chúng là chúng là bất khả tri DST.

Vì vậy, trừ khi bạn chọn một số cấu hình múi giờ để phù hợp với từng offset, hoặc bạn không quan tâm đến DST, không có cách nào để làm điều đó một cách tổng quát.


0
2017-08-23 17:52