This way should work on all Linux machines, at least RHEL/Debian (Ubuntu) based distros but most likely all and also should work on many Unix style machines I believe.
Many OS's have tools to update the timezone, but most of them (even if command line) require several bloated packages and even Xorg/KDE based packages etc..
Your time zone info file is actually in
/etc/localtime if you open this file in vi/vim/pico you'll see it's gibberish (binary code or another encoding).
Anyway that is the information for your timezone.
Note that all timezone information is stored in the following directory:
Africa Atlantic Chile Eire Factory GMT-0 Iceland Jamaica Mexico NZ posix ROC Universal zone.tab America Australia CST6CDT EST GB GMT+0 Indian Japan Mideast NZ-CHAT posixrules ROK US Zulu Antarctica Brazil Cuba EST5EDT GB-Eire Greenwich Iran Kwajalein MST Pacific PRC Singapore UTC Arctic Canada EET Etc GMT Hongkong iso3166.tab Libya MST7MDT Poland PST8PDT Turkey WET Asia CET Egypt Europe GMT0 HST Israel MET Navajo Portugal right UCT W-SU
Inside one of those subdirectdories will be the file with your zone information.
For example the Pacific Standard time I use is located in:
There are two ways to change your timezone, you can copy the contents of your timezone file into /etc/localtime or remove your localtime file and symlink to the new timezone.
I think to keep the existing format (no symlink and a physical file), this is the best way:
cat /usr/share/zoneinfo/Canada/Pacific > /etc/localtime
This just overwrites/updates your /etc/localtime file. For more advanced users you could just delete /etc/localtime and instead symlink to that file (same results but different method):
ln -s /usr/share/zoneinfo/Canada/Pacific /etc/localtime
Now just type
date and you'll see your timezone has been updated.