如何从javascript中的字符串获取月份?

问题描述 投票:4回答:8

我试过了

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

但得到NAN

我希望月份为July上述日期。

javascript date
8个回答
13
投票

假设您的日期是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" ];
var month_index =  parseInt(arr[1],10) - 1;
console.log("The current month is " + months[month_index]);

6
投票

使用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"

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
投票

您需要为它创建一个数组:http://www.w3schools.com/jsref/jsref_getmonth.asp

为什么不将你的日期初始化为:var d = new Date(2012,7,1);


0
投票

您可以使用此库来简化操作。 http://www.datejs.com/然后尝试以下代码:

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

0
投票

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

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()]);

0
投票

试试这个:

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

1月 - > 0,2月1日等等......


0
投票

简短的回答:使用上面的代码,大多数人最近会得到6的警报,因为Chrome和Firefox现在都了解这种格式。这是6而不是7因为Dates将月份理解为以0开头的索引,所以0是Jan,1是2月,2是Mar等。所以最简单的解决方法是:

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! Dates将月份理解为以0开头的索引,因此0表示Jan,1表示2月,2表示Mar等。这在使用日期构造函数时很容易混淆,但更容易转换为要求的July

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的信息:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date

© www.soinside.com 2019 - 2024. All rights reserved.