【问题标题】:How to keep original date format after manipulation?操作后如何保持原始日期格式?
【发布时间】:2018-05-24 09:21:44
【问题描述】:

我有一个这样的参考日期:

2018-05-23T17:02:59+02:00

我需要从这个参考日期中减去 1(毫秒)秒,然后以完全相同的格式返回它,如下所示:

2018-05-23T17:02:58+02:00

我成功地进入了同一日期的前一秒:

var refTime = '2018-05-23T17:02:59+02:00';
var d = new Date(refTime);
var nd = d.setMilliseconds(-1);

但我找不到如何以与refTime 完全相同的格式输出nd

我该怎么办?

【问题讨论】:

  • 使用moment.js,那个插件肯定有帮助
  • var nd = new Date(d.setMilliseconds(-1)); 有帮助吗?
  • 在您的示例中,您减去的是一秒,而不是一毫秒。您的日期格式的分辨率是 1 秒,即您不能在毫秒级别上操作。
  • @alx :这不是问题。我只需要转到前一秒。
  • @Taki。我认为它有帮助。我需要尝试是否可以输出相同的格式。

标签: javascript datetime


【解决方案1】:

更新:只需将日期减 1。

// 1ms difference
d.getMilliseconds() // 999  
newdate2.getMilliseconds() // 998

var refTime = '2018-05-23T17:02:59+02:00';
var d = new Date(refTime);
var nd = d.setMilliseconds(-1);

// new date 
var newdate = new Date(d - 1);
console.log(newdate);

【讨论】:

  • 在站点中运行代码 sn-p 为我输出“2018-05-23T15:02:58.999Z”,而不是“2018-05-23T17:02:58+02:00”跨度>
  • in 02:58 58 指秒
  • 我认为这是一个 sn-p 错误,请在浏览器控制台中尝试。
  • 正如@Shefeto 提到的,这不是我要照顾的输出。还是谢谢你。
【解决方案2】:

//Get second and set subtracting a second
var refTime = '2018-05-23T17:02:59+02:00';
var d = new Date(refTime);
var nd = d.setSeconds(d.getSeconds() - 1);
console.log(new Date(nd))

【讨论】:

    【解决方案3】:

    //Using moment js
    var refTime = '2018-05-23T17:02:59+02:00';
    var d = new moment(refTime);
    var nd = d.subtract(1, 'seconds')
    console.log(new moment(nd))
    <script src="https://momentjs.com/downloads/moment.min.js"></script>

    【讨论】:

      猜你喜欢
      • 2014-05-25
      • 1970-01-01
      • 2013-08-13
      • 2010-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多