是的,1448841600000 就是你说的日期:
moment(1448841600000).utc().format()
// "2015-11-30T00:00:00+00:00"
但那是太平洋时间的前一天
moment(1448841600000).tz('America/Los_Angeles').format()
// "2015-11-29T16:00:00-08:00"
当你将它调整到太平洋时间 9:30 时,它是 29 日,而不是 30 日。
moment(1448841600000).tz('America/Los_Angeles').hour(9).minute(30).format()
// "2015-11-29T09:30:00-08:00"
当你调用valueOf时,结果是:
moment(1448841600000).tz('America/Los_Angeles').hour(9).minute(30).valueOf()
// 1448818200000
这是正确的值,但它与您提供的不同。然而,当我运行你的代码时,它确实是我得到的。
Chrome 调试窗口的屏幕截图,包含您的确切代码:
另外,您在 cmets 中写道:
//moment("2015-11-30"); //monday 11/30 in UTC
实际上,那将是 当地时间,而不是 UTC。如果你想要 UTC,你可以使用:
moment.utc("2015-11-30")
虽然我不清楚你是使用这个字符串输入还是数字时间戳。
如果您要问的是您希望将 UTC 日期视为本地时间,然后应用任意本地时间 - 这是一个有点奇怪的操作,但它会是这样的:
var tempDate = moment.utc(1448841600000);
var adjustedStart = moment.tz([tempDate.year(), tempDate.month(), tempDate.date(), 9, 30],
"America/Los_Angeles");
console.log("adjustedStart in milliseconds:" + adjustedStart.valueOf());
// adjustedStart in milliseconds:1448904600000
这给出了您要求的值,但对我来说 - 这是一种期望有问题的气味。我会更仔细地研究需求和系统的其他部分。