SuperFunMan
SuperFunMan

Reputation: 175

Extract date and time from string

I have a date\time string:

Fri Feb 08 2013 09:47:57 GMT +0530 (IST)

I need to extract the date (02/08/2013) and time (09:47 am) parts and store them in two variables.

Is there an efficient way to do it using JavaScript?

I have written the following code:

var day = elementDate.getDate(); //Date of the month: 2 in our example
            var monthNo = elementDate.getMonth(); //Month of the Year: 0-based index, so 1 in our example
            var monthDesc = {'0':'January', '1':'February'}; //, "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
            var year = elementDate.getFullYear() //Year: 2013
            var hours = elementDate.getHours();
            var mins = elementDate.getMinutes();
            var lDateValue = (year.toString() + "-" + monthNo.toString() + "-" + day.toString());

document.getElementById("lDate").value = lDateValue;

I have this in my HTML:

<input type="date" name="name" id="lDate" class="custom" value=""/>
                <input type="time" name="name" id="lTime" class="custom" value=""  />

The fields are not getting updated. Am I missing something?

Upvotes: 12

Views: 79934

Answers (3)

Joshua Pinter
Joshua Pinter

Reputation: 47621

Convert to an ISO String and Split by "T".

Not sure what you're doing with the Date and the Time separately. But, if you have any intention of storing them in a database, it's best to store them in UTC time zone and in ISO format (e.g. 2013-02-08 and 09:47:57).

To get the date and time in this format, you can do something like:

const dateTimeInParts = yourDateTime.toISOString().split( "T" ); // DateTime object => "2021-08-31T15:15:41.886Z" => [ "2021-08-31", "15:15:41.886Z" ]

const date = dateTimeInParts[ 0 ]; // "2021-08-31"
const time = dateTimeInParts[ 1 ]; // "15:15:41.886Z"

I think the date in this format is good to go, but you may also want to strip the milliseconds and "Z" from the time, depending on where and how you're going to use it.

Upvotes: 1

iShubhamPrakash
iShubhamPrakash

Reputation: 708

You can directly get the date and time string using Date constructor with the help of methods .toLocaleDateString() and .toTimeString() as follow-

let dateStr =new Date("Wed Aug 05 18:11:48 UTC 2020")

dateStr.toLocaleDateString()
// "05/08/2020"

dateStr.toTimeString()
// "23:41:48 GMT+0530 (India Standard Time)"

Upvotes: 16

phenomnomnominal
phenomnomnominal

Reputation: 5515

The Date constructor is very good at creating dates from strings:

Use the following:

// This could be any Date String
var str = "Fri Feb 08 2013 09:47:57 GMT +0530 (IST)";
var date = new Date(str);

This will then give you access to all the Date functions (MDN)

For example:

var day = date.getDate(); //Date of the month: 2 in our example
var month = date.getMonth(); //Month of the Year: 0-based index, so 1 in our example
var year = date.getFullYear() //Year: 2013

Upvotes: 32

Related Questions