moment().format("MMM"); // "April" - 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
var objDate = new Date().toLocaleString("en-us", { month: "long" }); // result: August
var objDate = new Date().toLocaleString("en-us", { month: "short" }); // result: Aug
var dateFormat3 = new Date().getMonthName();# March
var dateFormat4 = new Date().getFormatDate();# 16 March, 2017
5
这是一种不依赖于硬编码阵列并支持多种语言环境的方法 .
If you need a whole array:
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;
};
var monthLocalizedString = function(month, locale) {
return new Date(2010,month).toLocaleString(locale,{month:"long"});
};
Usage:
console.log(monthLocalizedString(1, 'en')); // -> February
console.log(monthLocalizedString(1, 'bg')); // -> февруари
console.log(monthLocalizedString(1, 'de')); // -> Februar
function testDateInfo() {
var months = new Array();
var days = new Array();
var workingDate = new Date();
workingDate.setHours(0, 0, 0, 0);
workingDate.setDate(1);
var RE = new RegExp("([a-z]+)","ig");
//-- get day names 0-6
for (var i = 0; i < 7; i++) {
var day = workingDate.getDay();
//-- will eventually be in order
if (days[day] == undefined)
days[day] = workingDate.toLocaleDateString().match(RE)[0];
workingDate.setDate(workingDate.getDate() + 1);
}
//--get month names 0-11
for (var i = 0; i < 12; i++) {
workingDate.setMonth(i);
months.push(workingDate.toLocaleDateString().match(RE)[1]);
}
alert(days.join(",") + " \n\r " + months.join(","));
}
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;
2
要获取月份名称数组:
Date.monthNames = function( ) {
var arrMonth = [],
dateRef = new Date(),
year = dateRef.getFullYear();
dateRef.setMonth(0);
while (year == dateRef.getFullYear()) {
/* push le mois en lettre et passe au mois suivant */
arrMonth.push( (dateRef.toLocaleString().split(' '))[2] );
dateRef.setMonth( dateRef.getMonth() + 1);
}
return arrMonth;
}
alert(Date.monthNames().toString());
// -> janvier,février,mars,avril,mai,juin,juillet,août,septembre,octobre,novembre,décembre
30 回答
如果你're using jQuery, you'可能也使用jQuery UI,这意味着你可以使用$.datepicker.formatDate() .
要在不输入日期的情况下获取当前月份,请使用以下代码:
如果你不介意扩展Date原型(并且有一些很好的理由不想这样做),你实际上可以想出一个非常简单的方法:
然后,这些函数将应用于所有javascript Date对象 .
只需在
toLocaleString
周围写一个简单的包装器:如果您使用的是kendo,也可以这样做 .
以下是kendo site的格式化列表:
今天的自然格式是使用Moment.js .
以字符串格式获取月份的方法在Moment.js中非常简单,无需在代码中对月份名称进行硬编码:获取当月和年份的名称格式和全年(2015年5月):
如果您不想使用时刻并想显示月份名称 -
我衷心地推荐format库中的format函数,您可以像这样使用它:
除了冗长的其他功能列表外,它还具有很强的support for internationalization .
我们也可以用更短的版本来编写它,而不是声明包含所有月份名称然后用索引指向的数组:
使用momentjs,只需使用format表示法 .
这可以通过日期对象完成一些常见的简单过程 .
或者你可以制作日期原型
例如:
var dateFormat3 = new Date().getMonthName();
# March
var dateFormat4 = new Date().getFormatDate();
# 16 March, 2017
这是一种不依赖于硬编码阵列并支持多种语言环境的方法 .
If you need a whole array:
Usage:
If you need only a selected month (faster):
Usage:
测试并在Chrome和IE 11上正常工作 . 在Mozilla上需要进行一些修改,因为它会返回整个日期 .
更短的版本:
它可以用作
如果您不想使用外部库,或者存储月份名称数组,或者由于浏览器兼容性而导致ECMAScript Internationalization API不够好,您可以始终以旧式方式从提取信息中获取信息 . 日期输出:
这将为您提供缩写的月份名称,例如10月 . 我相信日期将以各种格式出现,具体取决于初始化和您的语言环境,因此请查看
toDateString()
返回的内容,并根据该值重新计算您的substring()
值 .尝试:
我想出了一个部分解决方案 . 它使用正则表达式来提取月份和日期名称 . 但是当我浏览区域和语言选项(Windows)时,我意识到不同的文化具有不同的格式顺序......也许更好的正则表达式模式可能是有用的 .
您可以使用几种可用的日期格式器之一 . 由于这属于JavaScript规范,因此它将在浏览器和服务器端模式下可用 .
例如
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date还有更多内容
将名称存储在数组中,然后按月份索引查找 .
JavaScript getMonth() Method
我使用的快速黑客效果很好:
我的最佳解决方案如下:
要获取月份名称数组:
http://jsfiddle.net/polinux/qb346/
现在可以使用ECMAScript Internationalization API执行此操作:
http://jsfiddle.net/dstorey/Xgerq/
“long”使用月份的全名,“short”表示短名称,“narrow”表示更小的版本,例如字母表中的第一个字母 .
您可以将语言环境更改为任何您喜欢的语言环境,并使用正确的名称语言/国家 .
使用
toLocaleString
,您每次都必须传入区域设置和选项 . 如果您要在多个不同日期使用相同的区域设置信息和格式选项,则可以使用Intl.DateTimeFormat
代替:这个API的主要问题是它是新的 . 它仅适用于Blink浏览器(Chrome和Opera),IE11,Microsoft Edge,Firefox 29和Safari 10
有关更多信息,请参阅我在Internationalization API上的博客文章 .
您可以使用datejs来执行此操作 . 检查FormatSpecifiers,MMMM为您提供月份名称:
而且datejs已经为超过150种语言环境进行了本地化! See here
使用这个配偶
这是另一个,支持本地化:)
然后,您可以轻松添加对其他语言的支持:
不幸的是,提取月份名称的最佳方法是来自UTCString表示:
只是扩展了许多其他优秀的答案 - 如果你使用jQuery - 你可以做类似的事情
其中
date
等于var d = new Date(somevalue)
. 这个的主要优点是@nickf所说的避免全局命名空间 .let date = new Date() let formatted = date.toLocaleDateString("en-GB", { month: "long", year: "numeric" }) console.log(
$)
=> 2018年11月更多here