Hong Van Vit
Hong Van Vit

Reputation: 2986

How can convert datetime form Net to JavaScript

Please don't make duplicate vs ASP.NET Parse DateTime result from ajax call to javascript date and Parsing DateTime format passed from Ajax to “dd/MM/yyyy”, I have been read carefully. But my question is differences.

I have data from asp.net load by ajax below.

 Datetime in c#: "2019-05-04" 

 The result in ajax is: "/Date(1556895600000+0900)/"

You can see the result automatic add time UTC offset to DateTime, I don't know why.

How can I convert to DateTime in javascript vs data above?

var d = new Date(("/Date(1556895600000+0900)/").match(/\d+/)[0] * 1)
console.log(d)

You can see: Result "2019-05-03T15:00:00.000Z", But I expect result "2019-05-04". How can I do this?

Upvotes: 0

Views: 199

Answers (1)

Devansh J
Devansh J

Reputation: 4224

Look I'm no dates expert but the following looks convincing to me

const parse = str => {
    let [_, timestamp, offsetHours, offsetMinutes] = str.match(/(\d+)([+-]\d\d)(\d\d)/).map(Number);
    
    let date = new Date(timestamp);
    date.setHours(date.getHours() + offsetHours);
    date.setMinutes(date.getMinutes() + offsetMinutes);
    return date;
}

console.log(
    parse("/Date(1556895600000+0900)/")
    .toJSON()
)
console.log(
    parse("/Date(1556895600000-0700)/")
    .toJSON()
)

Here's a ES3 version in case it doesn't work in older browsers (as the OP said in the comments)

function parse(str) {
    var matches = str.match(/(\d+)([+-]\d\d)(\d\d)/).map(Number);
    var timestamp = matches[1];
    var offsetHours = matches[2];
    var offsetMinutes = matches[3];
  
    var date = new Date(timestamp);
    date.setHours(date.getHours() + offsetHours);
    date.setMinutes(date.getMinutes() + offsetMinutes);
    return date;
}


console.log(
    parse("/Date(1556895600000+0900)/")
    .toJSON()
)
console.log(
    parse("/Date(1556895600000-0700)/")
    .toJSON()
)

Upvotes: 2

Related Questions