时刻时区为单元测试返回错误值



所以我的项目使用的是时刻时区。除了在单元测试之外,它在任何地方都能完美运行。我也想不通为什么。

我在打电话

moment(new Date(date)).tz(timezone).format(mask);

其中日期、掩码和时区如下所示:

date     = "2016-11-11T19:34:56.601Z"
mask     = "mm-dd-yyyy"
timezone = "America/New_York"

我得到的结果是:34-Fr-yyyy

在另一个调用中,将发生以下情况:

date     = "2016-12-13T21:57:53.336Z"
mask     = "mm-dd-yyyy"
timezone = "America/New_York"

结果是57-Tu-yyyy

您使用了错误的日期格式,正确的是MM-DD-YYYY

var date     = "2016-12-13T21:57:53.336Z";
var mask     = "mm-dd-yyyy";
var timezone = "America/New_York";
var dateStr = moment(date).tz(timezone).format('MM-DD-YYYY');
console.log(dateStr);
<script src="http://momentjs.com/downloads/moment.js"></script>
<script src="http://momentjs.com/downloads/moment-timezone-with-data.js"></script>

http://momentjs.com/docs/#/parsing/string-format