Hello I need to call an API and pass a date parameter, the backend has specified that it has to be ISO 8601. This is the example they gave me: 2020-01-01T00:00:00+01:00
the : is the escape character for :
the + is the escape character for
if I do console.log(new Date().toISOString())
i just get 2021-10-12T13:13:27.633Z
The api fails when I pass it converted toISOString().
What can I do?
CodePudding user response:
I solved it. I did it like this:
toIsoStringCustom(date: Date) {
var tzo = -date.getTimezoneOffset(),
dif = tzo >= 0 ? ' ' : '-',
pad = function(num: number) {
var norm = Math.floor(Math.abs(num));
return (norm < 10 ? '0' : '') norm;
};
return date.getFullYear()
'-' pad(date.getMonth() 1)
'-' pad(date.getDate())
'T' pad(date.getHours())
':' pad(date.getMinutes())
':' pad(date.getSeconds())
dif pad(tzo / 60)
':' pad(tzo % 60);
}
let today = new Date()
console.log(encodeURIComponent(this.toIsoStringCustom(today)))
CodePudding user response:
What you are trying to achieve has nothing to do with the date format. It's simply encoded so. The encodeURIComponent() function encodes a URI by replacing each instance of certain characters by one, two, three, or four escape sequences representing the UTF-8 encoding of the character (will only be four escape sequences for characters composed of two "surrogate" characters).
Check this snippet below:
console.log(encodeURIComponent("2021-10-12T13:13:27.633Z"));