0

I have an array of date

["Mon Jul 16 2018 11:40:28 GMT+0200 (CEST)",
 "Fri Jul 13 2018 09:33:46 GMT+0200 (CEST)",
 "Fri Jul 13 2018 09:21:36 GMT+0200 (CEST)",
 "Fri Jul 13 2018 09:03:42 GMT+0200 (CEST)",
 "Fri Jul 13 2018 09:01:05 GMT+0200 (CEST)",
 "Fri Jul 13 2018 08:53:23 GMT+0200 (CEST)",
 "Fri Jul 13 2018 08:52:33 GMT+0200 (CEST)",
 "Thu Jul 12 2018 13:41:59 GMT+0200 (CEST)",
 "Thu Jul 12 2018 13:41:49 GMT+0200 (CEST)",
 "Thu Jul 12 2018 13:41:42 GMT+0200 (CEST)"]

I want to get it in a different format as exemple

Monday 16 July 2018 instead of "Mon Jul 16 2018 11:40:28 GMT+0200 (CEST)"

Is there a way to go through the table and transform the date ?

const test1 = test.map(a => a.toISOString().slice(0, 10))
        console.log(test1)

Tried this got an error

var test = ["Mon Jul 16 2018 11:40:28 GMT+0200 (CEST)",
  "Fri Jul 13 2018 09:33:46 GMT+0200 (CEST)",
  "Fri Jul 13 2018 09:21:36 GMT+0200 (CEST)",
  "Fri Jul 13 2018 09:03:42 GMT+0200 (CEST)",
  "Fri Jul 13 2018 09:01:05 GMT+0200 (CEST)",
  "Fri Jul 13 2018 08:53:23 GMT+0200 (CEST)",
  "Fri Jul 13 2018 08:52:33 GMT+0200 (CEST)",
  "Thu Jul 12 2018 13:41:59 GMT+0200 (CEST)",
  "Thu Jul 12 2018 13:41:49 GMT+0200 (CEST)",
  "Thu Jul 12 2018 13:41:42 GMT+0200 (CEST)"
]

// Monday 16 July 2018 instead of "Mon Jul 16 2018 11:40:28 GMT+0200 (CEST)"



const test1 = test.map(a => a.toISOString().slice(0, 10));
console.log(test1)
mplungjan
  • 169,008
  • 28
  • 173
  • 236
LisaParker
  • 21
  • 3
  • 9
  • 1
    `test.map(a => new Date(a).toISOString()` but you just have to plug in one of the HUNDREDS of duplicates found when you search for "how to format a date javascript" – mplungjan Jul 16 '18 at 12:29

2 Answers2

0

toISOString does not give me the format you wanted.

You wanted

Monday 16 July 2018

instead of

"Mon Jul 16 2018 11:40:28 GMT+0200 (CEST)"

toLocaleString gives us a long month:

new Date(a).toLocaleString("en-us",{ 
   weekday: 'long', 
   year: 'numeric', 
   month: 'long', 
   day: 'numeric' })

then you can move the texts around like this:

var test = ["Mon Jul 16 2018 11:40:28 GMT+0200 (CEST)",      "Fri Jul 13 2018 09:33:46 GMT+0200 (CEST)",       "Fri Jul 13 2018 09:21:36 GMT+0200 (CEST)",       "Fri Jul 13 2018 09:03:42 GMT+0200 (CEST)",       "Fri Jul 13 2018 09:01:05 GMT+0200 (CEST)",       "Fri Jul 13 2018 08:53:23 GMT+0200 (CEST)",       "Fri Jul 13 2018 08:52:33 GMT+0200 (CEST)",       "Thu Jul 12 2018 13:41:59 GMT+0200 (CEST)",       "Thu Jul 12 2018 13:41:49 GMT+0200 (CEST)",       "Thu Jul 12 2018 13:41:42 GMT+0200 (CEST)"     ]

const locale = "en-us";
var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }
let test1 = test.map(function(a) { 
  let dateStr = new Date(a).toLocaleString(locale,options);
  return dateStr.replace(/(\w+), (\w+) (\d+), (\d+)/,"$1 $3 $2 $4");
})
console.log(test1)


// simpler if no replace of month:

// String

test1 = test.map(a => a.split(/ \d\d:/)[0]);
console.log(test1)

// date

test1 = test.map(a => new Date(a).toDateString());
console.log(test1)
mplungjan
  • 169,008
  • 28
  • 173
  • 236
0

Try this.

var days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]

var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]

var test = ["Mon Jul 16 2018 11:40:28 GMT+0200 (CEST)",
  "Fri Jul 13 2018 09:33:46 GMT+0200 (CEST)",
  "Fri Jul 13 2018 09:21:36 GMT+0200 (CEST)",
  "Fri Jul 13 2018 09:03:42 GMT+0200 (CEST)",
  "Fri Jul 13 2018 09:01:05 GMT+0200 (CEST)",
  "Fri Jul 13 2018 08:53:23 GMT+0200 (CEST)",
  "Fri Jul 13 2018 08:52:33 GMT+0200 (CEST)",
  "Thu Jul 12 2018 13:41:59 GMT+0200 (CEST)",
  "Thu Jul 12 2018 13:41:49 GMT+0200 (CEST)",
  "Thu Jul 12 2018 13:41:42 GMT+0200 (CEST)"
]

// Monday 16 July 2018 instead of "Mon Jul 16 2018 11:40:28 GMT+0200 (CEST)"



const test1 = test.map(a => { 
  a= new Date(a);
  var c= days[a.getDay()]+" "+a.getDate()+" "+months[a.getMonth()]+" "+a.getFullYear();
  return c;
});
console.log(test1)
yajiv
  • 2,901
  • 2
  • 15
  • 25