我想从约会开始。假设我的日期为03-08-2013
它是d-mm-yyyy
格式,所以我只想获得d
,这是从上面的日期开始的03,所以我尝试了这段代码,但它不起作用
注意 我想这样做而不包括任何js
var date = '08-03-2013';
var d = new Date(date);
alert(d.getDate());
// 2nd way
alert(date.getDate());
警告NaN
。这段代码中缺少什么?
这里是jsfiddel Link Jsfiddle Link
更新
答案 0 :(得分:2)
JS中的日期解析(以及许多语言,就此而言)是有问题的,因为当输入是日期字符串时,对于什么数据片来说,它是相当模糊的。例如,使用您的日期(2013年8月3日),它可以表示为
但是,如果只是日期字符串,则无法判断日期实际上是2013年8月3日还是2013年3月8日。
您应该单独传递日期值以确保正确解析日期:
var
str = '08-03-2013',
parts = str.split('-'),
year = parseInt(parts[2], 10),
month = parseInt(parts[1], 10) - 1, // NB: month is zero-based!
day = parseInt(parts[0], 10),
date = new Date(year, month, day);
alert(date.getDate()); // yields 3
答案 1 :(得分:1)
您无法了解访问者的区域设置。
如果您知道字符串的格式始终是d-mm-yyyy
,那么只需自己解析该值:
function GetDay(rawValue) {
var parts = rawValue.split("-");
if (parts.length === 3) {
var day = parseInt(parts[0], 10);
if (!isNaN(day))
return day;
}
alert("invalid date format");
return null;
}
答案 2 :(得分:1)
使用moment.js。它的解析能力比Date
类更灵活。
var m = moment('03-08-2013','DD-MM-YYYY');
var dayOfMonth = m.date();
答案 3 :(得分:0)
将它用于你想要的......
var date = '08-03-2013';
date=date.replace(/([0-9]{2})\-([0-9]{2})\-([0-9]{4})/g, '$3-$2-$1');
var d = new Date(date);
alert(d.getDate());
由于