How to convert JSON time stamp in javascript to date and time? - javascript

I am getting Time stamp as "2020-03-02T05:50:31.000Z"
How to convert this to Normal Readable Format with Date and Time Zone

const parsedDate = new Date("2020-03-02T05:50:31.000Z");
console.log(parsedDate.toGMTString())
//"Mon, 02 Mar 2020 05:50:31 GMT"
console.log(parsedDate.toLocaleString())
//"3/2/2020, 11:20:31 AM"
console.log(parsedDate.toDateString(), parsedDate.toTimeString())
//Mon Mar 02 2020 11:20:31 GMT+0530 (India Standard Time)

In java-script above date format can be parsed by using Date.
Eg:
var date = new Date('2020-03-02T05:50:31.000Z');

I don't know what you mean readable format but you can use following methods:
new Date('2020-03-02T05:50:31.000Z').toLocaleString();
// outputs date according to user locale settings
Or you can use getYear, getMonth, getDay methods to get them and format date as you want

You can use moment.js for date time format and conversion.
Pass your date timestamp as below:
moment.parseZone("2020-03-02T05:50:31.000Z").format("DD-MM-YYYY hh:mm:ss z Z")
Modify format as you need ref mentioned here
Use in your code as mentioned here

Related

How to convert a string in yyyy-mm-dd format to a Javascript Date Object without considering the date as UTC

I really just have a simple question. I want to convert a string in yyyy-mm-dd to a date object in javascript. This seems simple enough. You can just do the following.
var date = new Date('2020-04-08');
But in this case, javascript considers the date '2020-04-08' as UTC midnight. So the actual date that is returned to me is the following.
Tue Apr 07 2020 17:00:00 GMT-0700 (Pacific Daylight Time)
I know I can create a date in the following format
var date = new Date(2020, 3, 8);
Wed Apr 08 2020 00:00:00 GMT-0700 (Pacific Daylight Time)
But it looks like too much hassle to extract the year, month and date from the already nicely formatted date string. Isn't there a simple way to convert yyyy-mm-dd string to a date object without it being treated as UTC date?
So in the simplest terms, my question is how do I tell the date constructor that the date I am passing is not a UTC date but a local date.
Simply append 'T00:00:00' to your date string.
const dateString = '2020-04-08'
const timeString = 'T00:00:00'
const date = new Date(dateString + timeString);
console.info(date.toString())
From the documentation
Support for ISO 8601 formats differs in that date-only strings (e.g. "1970-01-01") are treated as UTC, not local.

momentjs - change format of local time

I am using moment to get the time. I am getting it in format: Thu Feb 21 2019 10:44:21 GMT+0500 (Pakistan Standard Time). However, I need it in format 03:44:21PM. Can anyone please tell me how I can achieve that using momentjs?
You can use momentjs for this purpose. moment().format()
moment().format('hh:mm:ss A')
For more details visit docs
Local can also be used to convert out of a fixed offset mode:
moment.parseZone('2016-05-03T22:15:01+02:00').local().format('hh:mm:ss A');
Get your TimeZone and convert your timezone using this:
let timeZone = moment.tz.guess();
let date = 'Thu Feb 21 2019 10:44:21 GMT+0500' // input date (other timezone)
let convertDate = moment(date).tz(timeZone) //converted Time

jQuery string casting as date and adding an hour

I'm working with an API which returns dates in the following format:
2017-07-28T12:36:17Z
I'm used to working with unix timestamps. What I need to do ultimately is add an hour to the time segment in order to account for British Summer Time.
How can I cast this data as a date, add an hour and then output the time segment?
console.log(new Date('2017-07-28T12:36:17Z').setUTCHours(1))
for British Summer Time (BST)
use .setUTCHours(1) . Check setUTCHours()
You can use Date() function
var d = new Date('2017-07-28T12:36:17Z');
console.log(d);
d.setHours(d.getHours()+1);
console.log(d);
This is a UTC formatted date, which includes a time string.
You can cast this as a JavaScript date using the Date constructor, e.g:
var testDate = new Date('2017-07-28T12:36:17Z');
console.log(testDate) // Fri Jul 28 2017 13:36:17 GMT+0100 (GMT Daylight Time)
Once it is a JS Date object, you can manipulate it as you need.

Why does moment.js return this date wrong?

I'm simply trying to take an input string and convert it to a date object.
moment.utc('2000-01-01T00:00:00.000Z').toDate()
But it returns this...
Fri Dec 31 1999 19:00:00 GMT-0500 (EST)
Thanks
That is a valid JavaScript Date Object. You can test this by opening a console in Chrome or Firefox, then entering the following:
// Mon Nov 24 2014 09:54:00 GMT-0800 (PST) (looks the same as your example)
console.log( new Date() );
If you want to format the value coming out of moment.js, you can use its format method and a mask.
// Example: November 24th 2014, 09:58:12am
var fdate = moment().format('MMMM Do YYYY, h:mm:ss a');
Moment.js doesn't modify the prototype, it simply wraps it.
If you want to convert a string to a date object using moment.js, you can just call it as such:
moment(your_date); // Unless in UTC mode this will display as local time
In your instance you're using the UTC mode.
2000-01-01T00:00:00.000Z is the GMT date/time.
Using moment.utc("2000-01-01T00:00:00.000Z").toDate() returns this date/time according to your timzone settings.
See : http://www.digitoffee.com/programming/get-local-time-utc-using-moment-js/94/
Hope it helps.

Converting Javascript Date

I have a date String in this format: Tue Sep 02 00:00:00 GMT+200 2014, I'd like to have only in Javascript this ISO Format: 2014-09-02T00:00:00.000Z.
So I have wrote this code:
var date = new Date("Tue Sep 02 00:00:00 GMT+200 2014");
date.toJSON();
but it returns: "2014-09-01T22:00:00.000Z".
How can I have the right date in ISO format? Thank you.
If you want to use the JavaScript native Date Object, you may want to look at its documentation first, especially the toISOString() method.
var date = new Date("Tue Sep 02 00:00:00 GMT+200 2014");
var n = date.toISOString();
this returns:
n: '2014-09-01T22:00:00.000Z'
which is the right ISO format. Your initial time is GMT+2 so, in ISO time, it corresponds to the same date/time but two hours before. As it is the 2nd of Sept, 00:00:00, 2 hours before lead to the day before, the 1st of Sept, at 22:00:00. You can't have the 2014-09-02T00:00:00.000Z you want in your question because it is not corresponding to an ISO date.
You can read more about ISO 8601 on Wikipedia.
There is a method for that.
date.toISOString()

Categories