javascript - 将 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)
解决方案
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)
推荐阅读
- linux - 如果为空,则编辑列的值
- ios - 如何确定用户使用应用程序的时间(swift4)
- jdbc - Netbeans 添加 Derby 驱动程序
- javascript - 如何从外部调用 highcharts 按钮
- python - 使用循环将多个数据框从上到下合并到单个工作表中
- ios - 如何:在发布 iOS 应用程序时安全地存储秘密令牌 (Nativescript)
- scala - 火花在多节点上将镶木地板写入HDFS非常慢
- c# - “HTTP 错误 502.5 - 进程失败”使用 ASP.NET Core 2.1 WebAPI 在 Azure PaaS 中访问 Azure Key Vault
- angular - Angular ngrx@effect 基本问题:键入'Observable
' 不可分配给类型 - google-cloud-functions - 谷歌云功能美国中央时区?