因此,我正在尝试向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文档答案 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()));