将日期更改为数组中的月份

时间:2018-01-09 08:35:05

标签: javascript arrays

我有一个看起来像这样的数组:

var myDates = ["2017-12-01 08:44:49", "2017-12-03 08:54:49", "2018-01-03 10:54:43"]

我想创建名为Moth的新数组,即

var myMonths = [
    'December', 'March', 'January']
];

我如何实现这一目标?

我可以使用以下内容在一个字符串上执行此操作:

var oneMonth = "2017-12-01 08:44:49";
var str = oneMonth.substring(5,7);

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

var saleMonths = months[str-1];
console.log(saleMonths);

6 个答案:

答案 0 :(得分:5)

您可以使用toLocaleString

进行地图制作

添加更多信息:

“long”使用月份的全名,“short”表示短名称,“narrow”表示更小的版本,例如字母语言的第一个字母。

您可以将语言环境更改为您喜欢的任何语言环境,并使用该语言/国家/地区的正确名称。

来自this回答。

var myDates = ["2017-12-01 08:44:49", "2017-12-03 08:54:49", "2018-01-03 10:54:43"]
const months = myDates.map(d => new Date(d).toLocaleString("en-us", { month: "long" }))
console.log(months)

答案 1 :(得分:1)

以下解决方案适合您。

首先,您map超过您的日期并获得每个月。然后映射这几个月并使用索引将月份作为基于months数组的单词。



var myDates = ["2017-12-01 08:44:49", "2017-12-03 08:54:49", "2018-01-03 10:54:43"]

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

let monthWords = myDates.map(month => {
  return month.substring(5, 7);
}).map(item => {
  return months[parseInt(item) - 1]
});

console.log(monthWords);




答案 2 :(得分:0)

使用mapsubstring扩展您自己的substring 逻辑)

myMonths  = myDates.map( s => months[ +s.substring(5,7) - 1 ] ); 



var myDates = ["2017-12-01 08:44:49", "2017-12-03 08:54:49", "2018-01-03 10:54:43"];
var months = [
  'January', 'February', 'March', 'April', 'May',
  'June', 'July', 'August', 'September',
  'October', 'November', 'December'
];
var myMonths  = myDates.map( s => months[ +s.substring(5,7) - 1 ] ); 

console.log( myMonths );




答案 3 :(得分:0)

您可以对一个字符串执行对数组中所有字符串的操作。

一种简单的方法是使用map功能。这是一个例子:



var myDates = ["2017-12-01 08:44:49", "2017-12-03 08:54:49", "2018-01-03 10:54:43"];
var months = [
    'January', 'February', 'March', 'April', 'May',
    'June', 'July', 'August', 'September',
    'October', 'November', 'December'
];

var onlyMonths = myDates.map(date => {
    var monthIndex = date.substr(5, 2) - 1;
    return months[monthIndex];
});

console.log(onlyMonths)




答案 4 :(得分:0)

您只需要将字符串str解析为数字,然后在months数组中搜索数字-1元素。像这样:

var oneMonth = "2017-12-01 08:44:49";
var number= parseInt(oneMonth.substring(5,7));

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

var saleMonths = months[number-1];
console.log(saleMonths);

答案 5 :(得分:0)

这个答案使用Date对象来解析字符串并获取月份。

然后它查找从一系列月份名称返回的月份。

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

function toMonth(dateString) {
  var d = new Date(dateString);
  return months[d.getUTCMonth()];
}
//TEST
var myDates = ["2017-12-01 08:44:49", "2017-12-03 08:54:49", "2018-01-03 10:54:43"];
console.log(myDates.map(function(d) {
  return toMonth(d);
}));