I think you want this:
https://github.com/mde/timezone-js
The parser does need a bit of a tweak to get to run without the other library the person put together (at least last I used it.. five months ago?), but otherwise this seems to be a solid library. I've used it on two very timezone sensitive, high traffic, commercial sites with great success.
It doesn't play well with jquery's date picker and momentjs (and probably other libraries) sometimes though, so be prepared to either tweak those libraries to use timezoneJS' date, or have a to/from conversion function so that you can turn a timezonejs date into a 'normal' date and vice-versa for input/output.
Otherwise, as a sample case, this will take an Asia/Singapore timezone date and turn it into an America/Los_Angeles date while respecting the daylight savings time for that year. It uses Olson timezone files, which are freely available, and parses them out into something that is actually really accurate.
Hopefully this gets you on the right path.
--Edit--
Forgot - a couple tips on using it. If you've got a limited set of timezones, I'd strongly recommend plucking those out by telling the parser to only use those - then you don't have to load a big file of all of them. Also, I got kicked once because setHours, setMinutes, etc don't follow the JS "spec" of setHours(0, 0, 0, 0) (which is hours, minutes, seconds, millis). There is an enhancement request here: https://github.com/mde/timezone-js/issues/48 I don't think that it will be at all difficult for the code modification to support that, so I hope we'll see it merged in sooner than later.. or I may just do it myself ;)