我在 EDT,我的最终用户在 PDT。我希望我的 WebApp 能够像在最终用户的时区运行一样运行(例如,即使他们旅行也是为了显示回家的时间)。来自 Java 服务器的时间戳被格式化为包含最终用户的时区,例如“Mon Oct 27 06:57:00 PDT 2014”,我还在配置文件中有最终用户 TZ 字符串,例如“America/Vancouver”。我正在使用本机 Date() 并且它为用户显示正确的时间,但我不能用它来比较时间和客户端中的时间。我希望更改为 moment.js,但我不知道如何让它做我想做的事。基本上,鉴于上述时间戳,我希望能够调用 m.hour() 并获得 6 回来。我还希望能够在最终用户时间中获得一年中的某一天(都是“现在” 和时间戳),并查看最后一个时间戳与当前时间的距离(以分钟为单位)。这是我失败的尝试:
var d = "Mon Oct 27 06:57:00 PDT 2014";
var ds = d.split(/ /).slice(1).join(' '); // eat "Mon "
var m = moment.tz(ds, "MMM D HH:mm:ss Z YYYY", "America/Vancouver");
alert("" + m.hour()); // 23 ??? Want "6"!
var n = moment.tz("America/Vancouver");
var df = n.diff(m, 'minute');
alert(m.format() + "\n" + n.format() +
"\n" + df + " minutes ago");
小提琴:http: //jsfiddle.net/up628qbq/
谢谢!