Gnanendra
Gnanendra

Reputation: 363

Convert date from 'Thu Jun 09 2011 00:00:00 GMT+0530 (India Standard Time)' to 'YYYY-MM-DD' in javascript

How can I convert the time from the format "Thu Jun 09 2011 00:00:00 GMT+0530 (India Standard Time)" to YYYY-MM-DD.

When I try to alert() the date then this will show the date like the following - Thu Jun 09 2011 00:00:00 GMT+0530 (India Standard Time)

But I need the time in YYYY-MM-DD format.

Are there any built function to convert?

Upvotes: 32

Views: 231525

Answers (8)

Nick390
Nick390

Reputation: 93

If you want to specify the symbol between each number follow use this

function dateConverter(str){
   var date = new Date(str),
   mnth = ("0" + (date.getMonth()+1)).slice(-2),
   day  = ("0" + date.getDate()).slice(-2);
   hours  = ("0" + date.getHours()).slice(-2);
   minutes = ("0" + date.getMinutes()).slice(-2);
   seconds  = ("0" + date.getSeconds()).slice(-2);
   year = date.getFullYear();
   return `${year}/${mnth}/${day} ${hours}:${minutes}:${seconds}`
}
console.log(dateConverter("Thu Jun 09 2011 00:00:00 GMT+0530 (India Standard Time)"))

Upvotes: 0

Khairul Islam Tonmoy
Khairul Islam Tonmoy

Reputation: 314

You can write this

const getDate = (str) => {
  if (str !== undefined) {
    var date = new Date(str),
      mnth = ("0" + (date.getMonth() + 1)).slice(-2),
      day = ("0" + date.getDate()).slice(-2);
    return [date.getFullYear(), mnth, day].join("-");
  } else {
    return "";
  }
} 

And call like this

getDate(input-date); retult: 2022-03-25

Upvotes: 0

fahdshaykh
fahdshaykh

Reputation: 682

var first_date = new Date("Thu Jun 09 2011 00:00:00 GMT+0530 (India Standard Time)"); var start_date = first_date.toLocaleDateString().slice(0,10);

Upvotes: 0

Andy E
Andy E

Reputation: 344557

You can parse the date using the Date constructor, then spit out the individual time components:

function convert(str) {
  var date = new Date(str),
    mnth = ("0" + (date.getMonth() + 1)).slice(-2),
    day = ("0" + date.getDate()).slice(-2);
  return [date.getFullYear(), mnth, day].join("-");
}

console.log(convert("Thu Jun 09 2011 00:00:00 GMT+0530 (India Standard Time)"))
//-> "2011-06-08"

As you can see from the result though, this will parse the date into the local time zone. If you want to keep the date based on the original time zone, the easiest approach is to split the string and extract the parts you need:

function convert(str) {
  var mnths = {
      Jan: "01",
      Feb: "02",
      Mar: "03",
      Apr: "04",
      May: "05",
      Jun: "06",
      Jul: "07",
      Aug: "08",
      Sep: "09",
      Oct: "10",
      Nov: "11",
      Dec: "12"
    },
    date = str.split(" ");

  return [date[3], mnths[date[1]], date[2]].join("-");
}

console.log(convert("Thu Jun 09 2011 00:00:00 GMT+0530 (India Standard Time)"))
//-> "2011-06-09"

Upvotes: 65

rachwongrw
rachwongrw

Reputation: 181

The easiest way for me to convert a date was to stringify it then slice it.

var event = new Date("Fri Apr 05 2019 16:59:00 GMT-0700 (Pacific Daylight Time)");

let date = JSON.stringify(event)
date = date.slice(1,11)

// console.log(date) = '2019-04-05'

Upvotes: 18

Moses Ndeda
Moses Ndeda

Reputation: 462

 function convertDatePickerTimeToMySQLTime(str) {
        var month, day, year, hours, minutes, seconds;
        var date = new Date(str),
            month = ("0" + (date.getMonth() + 1)).slice(-2),
            day = ("0" + date.getDate()).slice(-2);
        hours = ("0" + date.getHours()).slice(-2);
        minutes = ("0" + date.getMinutes()).slice(-2);
        seconds = ("0" + date.getSeconds()).slice(-2);

        var mySQLDate = [date.getFullYear(), month, day].join("-");
        var mySQLTime = [hours, minutes, seconds].join(":");
        return [mySQLDate, mySQLTime].join(" ");
    }

Upvotes: 0

Dhaval Chheda
Dhaval Chheda

Reputation: 924

Above solutions will work only if its a string. Input type date, gives you output in javascript date object in some cases like if you use angular or so. That's why some people are getting error like "TypeError: str.split is not a function". It's a date object, so you should use functions of Date object in javascript to manipulate it. Example here:

var date = $scope.dateObj ; 
//dateObj is data bind to the ng-modal of input type dat.
console.log(date.getFullYear()); //this will give you full year eg : 1990
console.log(date.getDate()); //gives you the date from 1 to 31
console.log(date.getMonth() + 1); //getMonth will give month from 0 to 11 

Check the following link for reference:

Upvotes: 3

Richard - IMPI MEDIA
Richard - IMPI MEDIA

Reputation: 41

function convert(str) {
    var date = new Date(str),
        mnth = ("0" + (date.getMonth()+1)).slice(-2),
        day  = ("0" + date.getDate()).slice(-2);
        hours  = ("0" + date.getHours()).slice(-2);
        minutes = ("0" + date.getMinutes()).slice(-2);
    return [ date.getFullYear(), mnth, day, hours, minutes ].join("-");
}

I used this efficiently in angular because i was losing two hours on updating a $scope.STARTevent, and $scope.ENDevent, IN console.log was fine, however saving to mYsql dropped two hours.

var whatSTART = $scope.STARTevent;
whatSTART = convert(whatever);

THIS WILL ALSO work for END

Upvotes: 4

Related Questions