2012-09-03 24 views
3

我试图如何从JavaScript中的字符串获取月份?

 var d=new Date("2012-07-01 00:00:00.0"); 
    alert(d.getMonth()); 

但要NAN

对于上述日期,我希望月份为July

+1

该字符串不解析... –

+0

试试这个string =“2012-07-01 00:00:00”。可能是最后一个'.0'导致了问题 – PoeHaH

+1

请参阅http://stackoverflow.com/questions/476105/how-can-i-convert-string-to-datetime-with-format-specification-in- javascript如果你想解析的格式 –

回答

10

假设你的日期是YYYY-MM-DD格式

var arr = "2012-07-01 00:00:00.0".split("-"); 
var months = [ "January", "February", "March", "April", "May", "June", 
    "July", "August", "September", "October", "November", "December" ]; 
console.log("The current month is " + months[parseInt(arr[1],10)]) 
0

尝试这样的:

var months = [ "January", "February", "March", "April", "May", "June", 
    "July", "August", "September", "October", "November", "December" ]; 
document.write("The current month is " + months[d.getMonth()]); 

一月至> 0,二月-1等等...

3

试试这个:

var str="2012-07-01"; //Set the string in the proper format(best to use ISO format ie YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS) 
    var d=new Date(str); //converts the string into date object 
    var m=d.getMonth()+1; //get the value of month 
    alert(m);   // Display the month value 

注意: getMonth()返回范围0-11中的值。因此+1范围1-12中的值。

+1

他想要几个月的名字 – Kageetai

0

你可以使用这个库来简化操作。 http://www.datejs.com/ 然后再试试下面的代码:

var d=new Date.parse("2012-07-01 00:00:00.0"); 
alert(d..tString('MMMM')); 
0

javascript日期对象不存储月份的全名。所以你必须使用一个数组。

var dateString = "2012-07-01 00:00:00.0"; 

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

var date = new Date(dateString.replace(" ", "T")); 
alert(monthNames [date.getMonth()]); 
3

使用the JavaScript Internationalization API

var date = new Date("2012-07-01"); 

var monthName = new Intl.DateTimeFormat("en-US", { month: "long" }).format; 
var longName = monthName(date); // "July" 

var shortMonthName = new Intl.DateTimeFormat("en-US", { month: "short" }).format; 
var shortName = shortMonthName(date); // "Jul" 
+0

似乎每个现代浏览器都支持http://caniuse.com/#search=internationalization –

0

简短的回答:与上面的代码大部分人会得到一个警报,6这些天,因为Chrome和Firefox现在明白了格式。它是6而不是7,因为Date将月份理解为从0开始的索引,所以0是Jan,1是2月,2是3月等。因此最简单的解决方法是这样的:

var d=new Date("2012-07-01 00:00:00.0"); 
var months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; 
var monthIndex = d.getMonth(); 
alert(months[monthIndex]); 

(请考虑使用不同的方法,虽然构造日期!)

龙答:

var d=new Date("2012-07-01 00:00:00.0"); 

问题是您购买的无效日期因为浏览器不理解该字符串。浏览器对此并不一致 - Chrome和Firefox实际上会正确解析它,并会提醒6而不是NaN。尽管你的格式不准确,但现在的Safari并不解析它。保证工作的格式在https://tools.ietf.org/html/rfc2822#section-3.3中描述。

你可能更愿意虽然使用此构造:

new Date(year, month[, date[, hours[, minutes[, seconds[, milliseconds]]]]]); 

在你的榜样,你会叫它像这样:

var d=new Date(2012, 6, 1); 

注6和7未不过! Date将月份理解为以0开始的索引,所以0是Jan,1是2月,2是3月等。

var d=new Date(2012, 6, 1); 
var months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; 
var monthIndex = d.getMonth(); 
alert(months[monthIndex]); 

您可以了解更多关于Date这里:使用日期构造函数,但更容易转化为July这是询问时,这是令人困惑https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date

相关问题