【问题标题】:API Response Date FormatAPI 响应日期格式
【发布时间】:2021-10-10 00:24:59
【问题描述】:

我正在使用 Google Apps 脚本发出 API 请求以获取日期。然而,日期以科学计数法 (1.635218706E9) 的形式返回,我假设它的格式是 1970 年以来的毫秒格式。在将其从科学计数法转换为常规数字 (1635218706) 后,创建了一个新的 javascript 日期错误的日期和年份。应该是 2021 年 10 月 25 日,但改为 1969 年 12 月 31 日。

从号码创建新日期时我是否遗漏了什么?有没有办法让 API 以更可读的日期而不是 1970 年的毫秒数响应?

【问题讨论】:

  • 关于is there a way just have the API respond with a more readable date instead of milliseconds from 1970?,能否提供您正在使用的API的详细信息?另外,你能提供你的脚本吗?
  • 该值似乎是秒,而不是毫秒,因此将指数从 9 更改为 12,或乘以 1000 (1e3):new Date(1.635218706E9 * 1e3).toISOString() 给出“2021-10-26T03:25:06.000Z ”。乘法还将强制将字符串转换为 Number,因此 new Date('1.635218706E9' * 1e3).toISOString() 也可以工作。 :-)
  • 这似乎已修复它。没有考虑到它可能以秒为单位,而不是毫秒。谢谢!

标签: javascript datetime google-apps-script


【解决方案1】:

以防万一。我发现如果你将这个数字乘以 1000 并将其提供给 Data 对象,你可以得到更合理的结果:

var seconds = 1.635218706E9;
var date = new Date(seconds*1000);
console.log(date); // output: 2021-10-26T03:25:06.000Z

var date_str = [date.getFullYear(), date.getMonth()+1, date.getDate()].join('/')
console.log(date_str); // output: 2021/10/26

看起来 API 给了你几秒钟的时间。

【讨论】:

    【解决方案2】:

    你可以使用 toLocaleString / toLocaleDateString

    所以代码是这样的

    const dates = new Date()
    const fullDates = dates.toLocaleString('en-US')
    

    您可以在此处阅读文档: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString

    【讨论】:

      猜你喜欢
      • 2019-03-24
      • 2014-04-10
      • 2012-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多