Javascript 从日期获取月份名称

Javascript 从日期获取月份名称,javascript,date,date-format,time-format,Javascript,Date,Date Format,Time Format,如何从JavaScript中的这个日期对象生成月份的名称(例如:十月/十月) var objDate = new Date("10/11/2009"); 较短版本: const monthNames=[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”, “七月”、“八月”、“九月”、“十月”、“十一月”、“十二月” ]; const d=新日期(); document.write(“当前月份为”+月份名称[d.getMonth()])如果您不介意扩展日期原型(并且有一些很好的理由不

如何从JavaScript中的这个日期对象生成月份的名称(例如:十月/十月)

var objDate = new Date("10/11/2009");
较短版本:

const monthNames=[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”,
“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”
];
const d=新日期();

document.write(“当前月份为”+月份名称[d.getMonth()])如果您不介意扩展日期原型(并且有一些很好的理由不想这样做),您实际上可以想出一个非常简单的方法:

Date.prototype.monthNames = [
    "January", "February", "March",
    "April", "May", "June",
    "July", "August", "September",
    "October", "November", "December"
];

Date.prototype.getMonthName = function() {
    return this.monthNames[this.getMonth()];
};
Date.prototype.getShortMonthName = function () {
    return this.getMonthName().substr(0, 3);
};

// usage:
var d = new Date();
alert(d.getMonthName());      // "October"
alert(d.getShortMonthName()); // "Oct"

然后,这些函数将应用于所有javascript日期对象。

这里是另一个函数,支持本地化:)

然后,您可以轻松添加对其他语言的支持:

Date.locale.fr = {month_names: [...]};
你可以用它。选中,MMMM为您提供月份名称:

var objDate = new Date("10/11/2009");
document.write(objDate.toString("MMMM"));
datejs已经本地化了150多个地区

它可以用作

var month_Name = new Date().getMonthName();
我衷心推荐库中的函数,您可以这样使用:

moment().format("MMM");  // "Apr" - current date
moment(new Date(2012, 01, 04)).format("MMM");  // "Feb" - from a local date
moment.utc(new Date(2012, 00, 04).format("MMM"); // "Jan" - from a UTC date
如果您需要月份的全名,请使用“MMMM”而不是“MMM”


除了一长串的其他特性外,它还有强大的功能。

如果您使用的是jQuery,那么您可能也在使用jQuery UI,这意味着您可以使用


您可以使用几个可用的日期格式化程序之一。由于这属于JavaScript规范,因此它将在浏览器和服务器端模式下都可用

objDate.toString().split(" ")[1]; // gives short name, unsure about locale 
objDate.toLocaleDateString.split(" ")[0]; // gives long name
e、 g


中还有更多内容,现在可以通过ECMAScript国际化API实现这一点:

const date=新日期(2009,10,10);//2009-11-10
const month=date.tolocalString('default',{month:'long'});

控制台日志(月)这是一种不依赖于硬编码数组并支持多个地区的方法

如果需要整个阵列:

var monthsLocalizedArray = function(locale) {
    var result = [];
    for(var i = 0; i < 12; i++) {
        result.push(new Date(2010,i).toLocaleString(locale,{month:"long"}));
    }
    return result;
};
console.log(monthsLocalizedArray('en')); // -> ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
console.log(monthsLocalizedArray('bg')); // -> ["януари", "февруари", "март", "април", "май", "юни", "юли", "август", "септември", "октомври", "ноември", "декември"]
var monthLocalizedString = function(month, locale) {
    return new Date(2010,month).toLocaleString(locale,{month:"long"});
};
console.log(monthLocalizedString(1, 'en')); // -> February
console.log(monthLocalizedString(1, 'bg')); // -> февруари
console.log(monthLocalizedString(1, 'de')); // -> Februar
new Date('2020-12-28').toLocaleString('en-us',{month:'short', year:'numeric'})
如果您只需要选定的月份(更快):

var monthsLocalizedArray = function(locale) {
    var result = [];
    for(var i = 0; i < 12; i++) {
        result.push(new Date(2010,i).toLocaleString(locale,{month:"long"}));
    }
    return result;
};
console.log(monthsLocalizedArray('en')); // -> ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
console.log(monthsLocalizedArray('bg')); // -> ["януари", "февруари", "март", "април", "май", "юни", "юли", "август", "септември", "октомври", "ноември", "декември"]
var monthLocalizedString = function(month, locale) {
    return new Date(2010,month).toLocaleString(locale,{month:"long"});
};
console.log(monthLocalizedString(1, 'en')); // -> February
console.log(monthLocalizedString(1, 'bg')); // -> февруари
console.log(monthLocalizedString(1, 'de')); // -> Februar
new Date('2020-12-28').toLocaleString('en-us',{month:'short', year:'numeric'})
用法:

var monthsLocalizedArray = function(locale) {
    var result = [];
    for(var i = 0; i < 12; i++) {
        result.push(new Date(2010,i).toLocaleString(locale,{month:"long"}));
    }
    return result;
};
console.log(monthsLocalizedArray('en')); // -> ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
console.log(monthsLocalizedArray('bg')); // -> ["януари", "февруари", "март", "април", "май", "юни", "юли", "август", "септември", "октомври", "ноември", "декември"]
var monthLocalizedString = function(month, locale) {
    return new Date(2010,month).toLocaleString(locale,{month:"long"});
};
console.log(monthLocalizedString(1, 'en')); // -> February
console.log(monthLocalizedString(1, 'bg')); // -> февруари
console.log(monthLocalizedString(1, 'de')); // -> Februar
new Date('2020-12-28').toLocaleString('en-us',{month:'short', year:'numeric'})

经过测试,适用于铬合金和IE 11。在mozilla上需要进行一些修改,因为它返回整个日期。

不幸的是,提取月份名称的最佳方法是从UTCString表示法:

Date.prototype.monthName = function() {
    return this.toUTCString().split(' ')[2]
};

d = new Date();
//=> Thu Mar 06 2014 23:05:21 GMT+0000 (GMT)

d.monthName();
//=> 'Mar'

如果您不想使用外部库,或者不想存储月名数组,或者如果ECMAScript国际化API由于浏览器兼容性而不够好,则始终可以通过从日期输出中提取信息的老式方法来完成:

var now = new Date();
var monthAbbrvName = now.toDateString().substring(4, 7);

这将为您提供一个缩写的月份名称,例如十月。我相信根据初始化和您的区域设置,日期将以各种格式出现,因此请查看
toDateString()
返回的内容,并在此基础上重新计算
substring()
值。

我的最佳解决方案如下:

       var dateValue = Date();
       var month = dateValue.substring(4,7);
       var date = dateValue.substring(8,10);
       var year = dateValue.substring(20,24);
       var finaldateString = date+"-"+month+"-"+year;

现在的自然格式是使用矩.js

以字符串格式获取月份的方法在Moment.js中非常简单,无需在代码中硬编码月份名称: 要以月份名称格式获取当前月份和年份以及完整年份(2015年5月),请执行以下操作:


一些常见的简单处理从日期对象可以这样做

var monthNames=[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”,
“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”
];
var monthShortNames=[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”,
“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”
];
函数dateFormat1(d){
var t=新日期(d);
返回t.getDate()+“”+monthNames[t.getMonth()]+','+t.getFullYear();
}
函数dateFormat2(d){
var t=新日期(d);
返回t.getDate()+''+monthShortNames[t.getMonth()]+','+t.getFullYear();
}
console.log(dateFormat1(new Date()))
log(dateFormat2(new Date())
使用,只需使用符号即可

const myDate = new Date()
const shortMonthName = moment(myDate).format('MMM') // Aug
const fullMonthName = moment(myDate).format('MMMM') // August

我们不必声明包含所有月份名称的数组,然后用索引指向它,我们还可以用一个较短的版本编写它,如下所示:

var objDate = new Date().toLocaleString("en-us", { month: "long" }); // result: August
var objDate = new Date().toLocaleString("en-us", { month: "short" }); // result: Aug

如果您不想使用“时刻”并想显示月份名称-

.config($mdDateLocaleProvider) {
    $mdDateLocaleProvider.formatDate = function(date) {      
      if(date !== null) {
        if(date.getMonthName == undefined) {
          date.getMonthName = function() {
            var monthNames = [ "January", "February", "March", "April", "May", "June", 
            "July", "August", "September", "October", "November", "December" ];
            return monthNames[this.getMonth()];
          }
        }        
        var day = date.getDate();
        var monthIndex = date.getMonth();
        var year = date.getFullYear();
        return day + ' ' + date.getMonthName() + ' ' + year;
      }
    };
  }
尝试:


如果你使用剑道,也可以这样做

kendo.toString(dateobject, "MMMM");
以下是来自以下站点的格式化程序列表:

“d”表示月份的第1天到第31天

“dd”月日,从01日到31日

“ddd”一周中某一天的缩写名称

“dddd”一周中某一天的全称

“f”日期和时间值的十分之一秒

“ff”日期和时间值的百分之一秒

“fff”日期和时间值中的毫秒

“M”是从1到12的月份

“MM”从01到12的月份

“MMM”月份的缩写名称

“MMMM”月份的全名

“h”表示小时,使用12小时制时钟从1到12

“hh”小时,使用12小时时钟从01点到12点

“H”表示小时,使用24小时制,从1到23

“HH”小时,使用24小时制,从01点到23点

从0到59的每分钟“m”

从00点到59点的一分钟

“s”是第二个,从0到59

“ss”第二个,从00到59

“tt”是AM/PM指示器

“yy”年值的最后两个字符

“yyyy”年的完整值

“zzz”使用格式解析UTC日期字符串时的本地时区


另一种格式化日期的方法

new Date().toLocaleString('en-us',{month:'long', year:'numeric', day:'numeric'}) //output: "May 21, 2019"

对我来说这是最好的解决办法

对于打字脚本也是如此

const env = process.env.REACT_APP_LOCALE || 'en';

const namedMonthsArray = (index?: number): string[] | string => {
  const months = [];

  for (let month = 0; month <= 11; month++) {
    months.push(
      new Date(new Date('1970-01-01').setMonth(month))
        .toLocaleString(env, {
          month: 'long',
        })
        .toString(),
    );
  }
  if (index) {
    return months[index];
  }
  return months;
};

document.write(new Date().tolocalString('en-us',{month:'long',year:'numeric',day:'numeric'}))
您可以使用或不使用本地语言进行翻译

  • 产生价值为“2009年10月11日”
  • const objDate=新日期(“10/11/2009”);
    施工月数=['1月'、'2月'、'3月'、'4月'、'5月'、'6月'、'7月'、'8月'、'9月'、'10月'、'11月'、'12月']
    if(objDate!==“无效日期”&&&!isNaN(objDate)){
    log(objDate.getDate()+“”+months[objDate.getmonths()]+“”+objDate.getFullYear())
    
    }
    您只需使用Date即可