node.jsでは、これは実際にはnode-time(https://github.com/TooTallNate/node-time)を使用すると非常に簡単です。グローバルDateオブジェクトをオーバーライドしてから、moment.jsを拡張します。
var time = require('time')(Date),
moment = require('moment');
moment.fn.setTimezone = function(timezone, relative) {
this.toDate().setTimezone(timezone, relative);
return this;
}
moment.fn.getTimezone = function() {
return this.toDate().getTimezone();
}
適切な測定のために、ユーティリティ関数を投入して、「着信」日付/時刻文字列をUTCに変換しましょう。
moment.fromTimezone = function(datetime, timezone) {
return moment(datetime, "YYYY-MM-DD HH:mm").setTimezone(timezone, true).setTimezone("UTC");
}
そして、あなたはこれを行うことができます:
var fmt = "YYYY-MM-DD HH:mm",
datetime = "2013-03-21 00:40",
timezone = "Israel",
m = moment.fromTimezone(datetime, timezone);
console.log(datetime, "in", timezone, "is", m.format(fmt), "in UTC");
console.log(m.format(fmt), "in UTC is", m.setTimezone(timezone).format(fmt), "in", m.getTimezone());
シェル出力:
$ node mtz.js
2013-03-21 00:40 in Israel is 2013-03-20 22:40 in UTC
2013-03-20 22:40 in UTC is 2013-03-21 00:40 in Israel
$