ES6 - 将日期字符串输出为ISO格式,不带任何库

时间:2018-01-23 04:05:16

标签: javascript datetime ecmascript-6

几乎像Node.js - How to format a date string in UTC一样 以下是我想要的格式(两者):



var x = new Date();
console.log(x);
var u = x.toISOString();
console.log(u);




但是,输出是UTC时区&格式(由尾随Z表示),而

我只需要在当地时区。怎么做?

我已经尝试了.toLocaleDateString()toLocaleTimeString()toLocaleFormat("%Y-%m-%d %H:%M:%S")toString("yyyyMMddHHmmss")等等,但没有一个正在运作。请帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

这样的东西?

function formatLocal(d) {

  // tzo is minutes, and signed opposite of the
  // usual -06:00 or +03:00 format you're used to
  const tzo = d.getTimezoneOffset()

  // get hours offset
  let tzH = Math.floor(Math.abs(tzo / 60))

  // get minutes offset
  let tzM = tzo % 60

  // pad and negate accordingly
  tzH = (tzH < 10) ? `0${tzH}` : tzH
  tzH = (tzo > 0)  ? `-${tzH}` : tzH
  tzM = (tzM < 10) ? `0${tzM}` : tzM

  // replace Z with timezone offset
  return d.toISOString().replace('Z', `${tzH}:${tzM}`)
}