首页 > 解决方案 > 将 IsoDate 数组转换为日期格式

问题描述

我有一个日期数组

["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)"]

我想以不同的格式获取它作为示例

2018 年 7 月 16 日星期一,而不是“2018 年 7 月 16 日星期一 11:40:28 GMT+0200 (CEST)”

有没有办法通过表格并转换日期?

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

试过这个有错误

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)

标签: javascript

解决方案


toISOString 没有给我你想要的格式。

你自找的

2018 年 7 月 16 日星期一

代替

“2018 年 7 月 16 日星期一 11:40:28 GMT+0200 (CEST)”

toLocaleString给了我们一个漫长的月份:

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

然后你可以像这样移动文本:

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)


推荐阅读