是的,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()
当你调用valueOf
时,结果为:
moment(1448841600000).tz('America/Los_Angeles').hour(9).minute(30).valueOf()
// 1448818200000
这是正确的值,但与您提供的不同。然而,当我运行您的代码时,我也得到了这个值。
Chrome 调试窗口中显示的屏幕截图,显示了您的精确代码:
![screenshot](https://istack.dev59.com/flIVa.webp)
此外,在您编写的注释中:
//moment("2015-11-30"); //monday 11/30 in UTC
实际上,那将是以当地时间为准,而不是协调世界时(UTC)。如果您想要使用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());
这样可以得到你所要求的值,但对我来说,这意味着期望中可能存在问题。我会更仔细地检查需求和系统的其他部分。