一天后Javascript约会到ISOSstring / toJSON

时间:2017-04-02 16:13:45

标签: javascript time

我存储了两个日期。第一个日期是当天,第二个日期是未来日期。要将这些日期转换为年 - 月 - 日格式,我使用toISOSstring函数。但通常(但不总是)当前日期会向后更改一天。

我也尝试使用toJSON函数。但一切都没有改变。

    season.from =  "Sun Apr 02 2017 18:29:52 GMT+0200 (CEST)"
    season.to =   "Fri Apr 21 2017 18:29:52 GMT+0200 (CEST)"

    var date1 = new Date(season.from);
    var date2 = new Date(season.to);

    season.from = date1.toISOString().slice(0,10);
    season.to = date2.toISOString().slice(0,10);
    console.log(season.from); // one day backwards (e.g. 2017-04-01 not 2017-04-02)
    console.log(season.to); // proper date somewhere in the future

1 个答案:

答案 0 :(得分:0)

您的原始时间字符串是当地时间,或者至少它们具有时区规范。但是toISOString returns the UTC time

  

时区始终为零UTC偏移,由后缀“Z”

表示

对于GMT + 02时区,这意味着toISOString返回的日期/时间比当地时间早两个小时。在某些情况下,这可能是午夜之前的时间,这也可以呈现不同的日期。

toJSON方法的实施取决于toISOString,因此它具有相同的行为。

变通

您可以使用toLocaleDateString('se'),它使用您当地的时间,并根据瑞典标准格式化,即YYYY-MM-DD,因此您甚至不需要对其进行切片。您可以指定其他一些国家/地区代码也可以使用相同的代码。