mcfred
mcfred

Reputation: 1391

Javascript date conversion and adding days

I have a date in the form of a string like below:

var dateInput= "Sat Dec 7 2019 00:00:00 GMT+0300 (East Africa Time)";

I want to convert this date to dd/mm/yyyy and be able to add and subtract days from this date and still retain the same format.

Here's what I did to convert this string to dd/mm/yyyy date format: I used this helper function:

function convertDate(inputFormat) {
  function pad(s) { return (s < 10) ? '0' + s : s; }
  var d = new Date(inputFormat);
  return [pad(d.getDate()), pad(d.getMonth()+1), d.getFullYear()].join('/');
}

So, then I did :

var date = new Date(convertDate(eddFromCouch)); 

which gave me the string 7/12/2019;

Then, when I tried to add the 5 days to the date above, I got the following:

date = date.setDate(date.getDate() + 5);
console.log(date);   // returns 1563310800000

I believe 1563310800000 a UNIX timestamp which converts to July,16,2019

I was expecting it to return 12/12/2019.

Upvotes: 0

Views: 82

Answers (2)

Ayush Gupta
Ayush Gupta

Reputation: 9285

Your dateInput is actually the format returned by date.toString, and can be passed directly to the date constructor to get a date object.

function toDDMMYYY(date) {
  let parts = [];
  let dd = date.getDate();
  let mm = date.getMonth() + 1;
  let yyyy = date.getFullYear();
  if (dd < 10) {
    parts.push(`0${dd}`)
  } else {
    parts.push(`${dd}`)
  }
  if (mm < 10) {
    parts.push(`0${mm}`)
  } else {
    parts.push(`${mm}`)
  }
  parts.push(yyyy)
  return parts.join('/');
}

const input = "Sat Dec 7 2019 00:00:00 GMT+0300 (East Africa Time)";
let date = new Date(input);
date = new Date(date.setDate(date.getDate() + 5));
console.log(toDDMMYYY(date))

Upvotes: 0

Phil
Phil

Reputation: 583

Here is how you can achieve this using Moment.js. This library makes tasks like parsing, manipulating and displaying dates much easier to achieve.

var input = "2019-08-14T08:06:49.288Z";
var date = moment(input);
date.add(5, "days");

console.log(date.format("DD/MM/YYYY"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>

Upvotes: 2

Related Questions