【问题标题】:Include millisecond data in JavaScript Date在 JavaScript Date 中包含毫秒数据
【发布时间】:2017-09-12 04:30:03
【问题描述】:

我需要在搜索时将当前系统日期发送到微服务。时间也应该包括毫秒信息。现在我正在发送new Date(),它看起来像:

Thu Aug 31 2017 15:06:37 GMT+0530 (India Standard Time)

但是我也需要毫秒信息,所以时间应该是这样的:

Thu Aug 31 2017 15:06:37.228 GMT+0530 (India Standard Time)

这里的 228 是我可以使用 dategetMilliseconds() 方法提取的那一刻的毫秒数。问题是如何在日期中添加它,以便它适用于访问应用程序的所有位置?

【问题讨论】:

  • 您只是看到Date 对象的许多可能的字符串解释之一。我建议使用Date.prototype.toISOString() 进行数据传输
  • 您还可以发送纪元和时区信息中的毫秒数,这些信息可以在任何后端平台等上轻松解析。
  • @Phil 如果我使用 toISOString() 日期看起来像 2017-09-12T04:37:09.794Z,我的微服务如何将 Z 转换为时区?
  • @pate 你能分享示例代码吗?
  • @Manu 你真的需要用户的时区吗?如果是这样,您可以通过Date.prototype.getTimezoneOffset 单独发送偏移量。只有在显示日期/时间瞬间时才需要时区/偏移量

标签: javascript jquery html date


【解决方案1】:

如果您不介意将结果作为字符串,这将显示您正在寻找的输出:

// ES5
var fmtDateMsES5 = function(date) {
  var splitDate = date.toString().split(' ');
  splitDate[4] = splitDate[4] + '.' + date.getMilliseconds();
  return splitDate.join(' ');
}

// log output (ES5)
console.log('ES5 output\n', fmtDateMsES5(new Date()));


// ES6
const fmtDateMsES6 = date => {
  const splitDate = date.toString().split(' ');
  splitDate[4] = `${splitDate[4]}.${date.getMilliseconds()}`;
  return splitDate.join(' ');
};

// log output (ES6)
console.log('ES6 output\n', fmtDateMsES6(new Date()));


// ES5 and ES6 functions logged simultaneously
console.log(
  `\nES5 and ES6 functions logged simultaneously`,
  `\n${'-'.repeat(55)}`,
  `\nES5 output ${fmtDateMsES5(new Date())}`,
  `\nES6 output ${fmtDateMsES6(new Date())}`
);

【讨论】:

  • 非常感谢,它非常接近预期的结果。我尝试了您的代码并得到了 Tue,Sep,12,2017,10:47:12.421,GMT+0530,(India,Standard,Time)。问题是每个空格都被用作分隔符,因此时区被破坏了..加入不起作用..它没有加入空格。
  • 我的错,这个连接的结果是一个字符串,所以我必须将它分配给其他变量或返回这个。
  • 没问题。为了清楚起见,我将代码放入 sn-p。
  • 咦,为什么 ES5 和 ES6 的时间不完全一样呢? 0.001 毫秒的差异。你注意到了吗?
  • 这是因为他们在运行时输出时间。这些功能是分开执行的,而不是同时执行的。因此,它们每个都在运行时记录new Date()。我们也可以同时将它们记录在同一个 console.log 语句中。
【解决方案2】:

最初我在 Date 对象上看到了 format 方法,但这不是内置的,需要一个库。

如果您必须使用时间库,我会推荐出色的 moment.js 并使用“SSS”语法来获取毫秒,例如:

var now = moment().format('MMM DD h:mm.SSS A');
//Sep 12 8:21.167 AM

http://jsfiddle.net/kLL2eobh/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-24
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 2013-12-30
    • 2011-05-15
    • 1970-01-01
    相关资源
    最近更新 更多