Câu trả lời:
Một công cụ tôi thấy dễ sử dụng hơn dpkg-reconfigure
. Sử dụng:
sudo dpkg-reconfigure tzdata
Bạn sẽ được cung cấp vô số lựa chọn, bao gồm một số không được bao gồm trong tzselect
.
Điều này có lẽ hơi muộn đối với OP và dành cho những người tìm kiếm khác đến đây.
Nếu bạn cần một giải pháp không tương tác, hãy thử giải pháp này từ việc thay đổi múi giờ với dpkg-cấu hình lại tzdata và debconf-set-select
echo "Europe/Zurich" > /etc/timezone
dpkg-reconfigure -f noninteractive tzdata
Bạn có thể tìm ra múi giờ của mình bằng cách chọc vào / usr / share / zoneinfo. Trong thực tế, lệnh dpkg-cấu hình lại ở trên sao chép tệp thích hợp từ đó sang / etc / localtime. Tôi đã từng làm điều đó bằng tay, và nó dường như hoạt động tốt.
Đừng quá ngạc nhiên nếu các quy trình chạy dài không nhận được sự thay đổi. ví dụ: dấu thời gian nhật ký Apache xuất hiện trong tâm trí. Xem xét liệu điều đó có quan trọng không, và do đó bạn có cần khởi động lại các tiến trình đang chạy hay thậm chí khởi động lại.
/etc/localtime
chưa tồn tại. Nếu nó tồn tại và là một liên kết mềm /usr/share/zoneinfo/whatever
, nó được coi là cơ sở và nó /etc/localtime
được cập nhật tương ứng, ghi đè lên các thay đổi của bạn.
Để chỉnh sửa nó không tương tác trên các phiên bản Debian và Ubuntu gần đây (Stretch / Xenial, v.v.), bạn cũng cần phải xóa /etc/localtime
, nếu không /etc/timezone
sẽ bị ghi đè.
echo 'Europe/Zurich' > /etc/timezone
rm /etc/localtime
dpkg-reconfigure -f noninteractive tzdata
Câu trả lời này dựa trên câu trả lời của mc0e. Tôi không thể thêm một bình luận với danh tiếng của tôi.
TL; DR
echo "TZ=Etc/UTC" >> /etc/environment
tzconfig
nơi Etc/UTC
là múi giờ ưa thích của bạn, bạn tìm thấy sử dụng tzselect
.
Phiên bản dài hơn
Khi bạn đang sử dụng
dpkg-reconfigure tzdata
thông tin múi giờ không được lưu giữ sau khi khởi động lại. Bạn có thể xác minh cài đặt của mình với
diff -s /etc/localtime /usr/share/zoneinfo/`cat /etc/timezone`
Nếu bạn chỉ cập nhật /etc/timezone
, bản cập nhật sẽ không phù hợp /etc/localtime
, do đó tốt hơn là thực thi
tzconfig
Sử dụng tzselect
để tìm ra múi giờ thực sự tồn tại (hoặc đơn giản là duyệt /usr/share/zoneinfo
thư mục).
Trong các hệ thống POSIX, TZ
nên được ưu tiên trước /etc/localtime
:
export TZ='Europe/Berlin'
$ date
Tue Apr 10 08:51:03 CEST 2018
export TZ='Pacific/Efate'
$ date
Tue Apr 10 18:28:33 +11 2018
Sử dụng trực tiếp TZ
có thể giúp bạn tiết kiệm nhiều cuộc gọi hệ thống vì các chức năng liên quan đến ngày / giờ được sử dụng thường xuyên phải truy cập hệ thống tệp mỗi khi một số chương trình yêu cầu ngày hiện tại. Đó là một tối ưu hóa vi mô, nhưng khá đơn giản.
TZ
trong tệp hồ sơ của bạn tạo ra một liên kết tượng trưng? Điều đó không đúng chút nào trong kinh nghiệm của tôi. Có lẽ bạn có nghĩa là "Cũng đảm bảo tạo liên kết tượng trưng ..."?
$TZ
biến được đọc bởi các glibc
hàm: gnu.org/software/libc/manual/html_node/TZ-Variable.html
echo "TZ=Etc/UTC" >> /etc/environment
? bạn đang thiếu TZ=
một phần ... (nếu trường hợp ai đó vẫn đang chạy các phiên bản debian cổ đại). Ngoài ra, những thứ không tương tác như daemon vẫn sẽ sử dụng /etc/localtime
phiên bản thay vì một bộ trong TZ
...