All of the time zones OpenBSD supports are in the /usr/share/zoneinfo directory tree. You need to create a symlink to /etc/localtime file.
- /usr/share/zoneinfo - time zone information directory
- /etc/localtime - local time zone file
- /usr/share/zoneinfo/posixrules - used with POSIX-style TZ's (generally not required)
- /usr/share/zoneinfo/GMT - for UTC leap seconds
Here is my current timezone - set to Asia / Calcutta (GMT +5:30):
$ ls -l /etc/localtime
lrwxr-xr-x 1 root wheel 33 Sep 19 2007 /etc/localtime -> /usr/share/zoneinfo/Asia/Calcutta
How do I change time zone?
You will see several subdirectories for various countries or continents, each containing either city names or local time zones.
# ls /usr/share/zoneinfo/
Africa Atlantic Canada EST5EDT Factory GMT-0 Iceland Japan MST7MDT Navajo Portugal UCT WET zone.tab America Australia Chile Egypt GB GMT0 Indian Kwajalein Mexico PRC ROC US Zulu Antarctica Brazil Cuba Eire GB-Eire Greenwich Iran Libya Mideast PST8PDT ROK UTC posix Arctic CET EET Etc GMT HST Israel MET NZ Pacific Singapore Universal posixrules Asia CST6CDT EST Europe GMT+0 Hongkong Jamaica MST NZ-CHAT Poland Turkey W-SU right
Find the file for the time zone you like or for a city whose time zone you share. To set the time zone, just create a new symbolic link to the file from /etc/localtime.
# ln -sf /usr/share/zoneinfo/America/Chicago /etc/localtime
Verify new timezone with the date command:
Fri Sep 2 15:32:16 CDT 2016
You can also use the zic command. Y need to give the time zone as local time. zic will act as if the input contained a link line of the form:
Link timezone posixrules
For example set timezone to America/New_York, enteR:
# zic -l America/New_York
Fri Sep 2 16:34:20 EDT 2016