这些时间戳有什么区别?

时间:2019-07-17 20:01:28

标签: javascript timestamp

因此,我正在尝试向API发出发布请求,其中一个必需的值是一个日期,根据该日期,文档应采用以下格式

Start time of the timesheet, in ISO 8601 format 
(YYYY-MM-DDThh:mm:ss±hh:mm). Time should reflect the user's local time.

但是当我尝试以ISO格式设置new Date().toISOString()值时,我会得到这个

2019-07-17T19:50:08.057Z

所以我想我的问题是,我如何才能生成他们正在寻找的假定格式,而该格式显然与ISO 8601不同?或以下时间戳记的格式是什么?

2018-07-25T13:10:23-07:00

这是我正在使用的https://tsheetsteam.github.io/api_docs/#create-timesheets

的api文档

3 个答案:

答案 0 :(得分:0)

只需除去尾巴即可。像这样的东西。

console.log(new Date().toISOString().replace(/(.+)(\..+?$)/g,'$1'));

答案 1 :(得分:0)

您需要设置位置时间来引用子午线0 +或-,您可以使用momentjs之类的库进行设置,基本上,您可以设置要比较的引用

{{1}}

答案 2 :(得分:0)

您的问题类似于Javascript date format like ISO but local,但您也需要时区,所以:

function toISOLocal(date) {

  // Pad single digit numbers with leading zero
  function z(n){return (n<10?'0':'')+n}

  // Copy the input date
  var d = new Date(date);

  // Get offset and adjust
  var offset = d.getTimezoneOffset();
  d.setMinutes(d.getMinutes() - offset);

  // Build timestamp with adjusted date and local offset
  var sign = offset < 0? '+' : '-';
  offset = Math.abs(offset);
  var offsetStr = sign + z(offset/60|0) + ':' + z(offset%60);

  return d.toISOString().replace(/z$/i, offsetStr);
}

console.log(toISOLocal(new Date()));

但是我怀疑您可以使用内置的 toISOString 来解决,只需将尾随的Z替换为+00:00。您可能还需要删除小数秒部分:

function modifyISO(d) {
  return d.toISOString().replace(/\.\d+/, '').replace(/z$/i,'+00:00');
}

console.log(modifyISO(new Date()));