使用Javascript将字符串(2016年7月30日)转换为日期(2016年7月30日)
我想将字符串转换为日期格式使用Javascript将字符串(2016年7月30日)转换为日期(2016年7月30日),javascript,angularjs,Javascript,Angularjs,我想将字符串转换为日期格式 我的字符串格式是2016年7月30日,希望转换为2016年7月30日。只使用javascript。如果没有像矩这样的库,最好的方法是保留一个月数组来获取数值(不能保证每个浏览器都会解析该日期),然后拆分字符串并解析它 var月=[ “一月”, 二月,, “三月”, “四月”, “五月”, "六月",, 七月,, "八月",, "九月",, “十月”, 十一月,, “十二月” ]; 功能板(x){返回x
我的字符串格式是2016年7月30日,希望转换为2016年7月30日。只使用javascript。如果没有像矩这样的库,最好的方法是保留一个月数组来获取数值(不能保证每个浏览器都会解析该日期),然后拆分字符串并解析它
var月=[
“一月”,
二月,,
“三月”,
“四月”,
“五月”,
"六月",,
七月,,
"八月",,
"九月",,
“十月”,
十一月,,
“十二月”
];
功能板(x){返回x<10?'0'+x:x};//零填充
var str=“2016年7月30日”;
var parts=str.split('-');
风险值日期=新日期(第[2]部分,月数。指数)(第[1]部分,第[0]部分);
//现在您可以输出任何内容
var new_date=date.getFullYear()+'-'+pad(date.getMonth()+1)+'-'+pad(date.getDate());
document.body.innerHTML=新建日期代码>另一种方式:
function formatDate(string) {
var date = new Date(string),
dd = date.getDate(),
mm = date.getMonth() + 1,
yyyy = date.getFullYear();
dd = dd < 10 ? '0' + dd : dd;
mm = mm < 10 ? '0' + mm : mm;
return yyyy + '-' + mm + '-' + dd;
}
console.log(formatDate('30-Jul-2016')); // 2016-07-30
函数格式日期(字符串){
变量日期=新日期(字符串),
dd=date.getDate(),
mm=日期。getMonth()+1,
yyyy=date.getFullYear();
dd=dd<10?'0'+dd:dd;
毫米=毫米<10英寸0英寸+毫米:毫米;
返回yyyy+'-'+mm+'-'+dd;
}
控制台日志(格式日期('2016年7月30日');//2016-07-30
var d=新日期('2016年7月30日)。拆分('-')。加入(''),
dFormated=d.getFullYear()+'-'+('0'+(d.getMonth()+1)).slice(-2)+'-'+d.getDate();
控制台日志(数据格式)代码>试试这个
var日期='2016年7月30日';
日期=日期。拆分('-')。合并('');
var d=新日期(日期);
警报(d.getFullYear()+'-'+(d.getMonth()+1)+'-'+d.getDate());
log(d.getFullYear()+'-'+(d.getMonth()+1)+'-'+d.getDate())代码>请尝试此代码
var date = '30-Jul-2016';
date = date.split('-').join(' ');
var d = new Date(date);
dd = d.getDate();
mm = d.getMonth() + 1;
yyyy = d.getFullYear();
dd = dd < 10 ? '0' + dd : dd;
mm = mm < 10 ? '0' + mm : mm;
alert(yyyy + '-'+mm +'-'+ dd);
var日期='2016年7月30日';
日期=日期。拆分('-')。合并('');
var d=新日期(日期);
dd=d.getDate();
mm=d.getMonth()+1;
yyyy=d.getFullYear();
dd=dd<10?“0'+dd:dd;
毫米=毫米<10英寸0'+mm:mm;
警报(yyyy+'-'+mm+'-'+dd);
为了尽可能动态,我建议实现第一个Douglas Crockford的替换函数,并将其分配给String对象的原型()。以下是您的操作方法:
String.prototype.supplant = function (o) {
return this.replace(/{([^{}]*)}/g,
function (a, b) {
var r = o[b];
return typeof r === 'string' || typeof r === 'number' ? r : a;
}
);
};
之后,您可以实现如下内容:
function changeFormat(from, to){
var months = [
'Jan',
'Feb',
'Mar',
'Apr',
'May',
'Jun',
'Jul',
'Aug',
'Sep',
'Oct',
'Nov',
'Dec'
];
var date = new Date(from);
return to.supplant({
YYYY: date.getFullYear(),
MMM: months[date.getMonth()],
MM: date.getMonth()+1 > 9 ? date.getMonth()+1 : '0'+parseInt(date.getMonth()+1),
DD: date.getDate() > 9 ? date.getDate() : '0' + parseInt(date.getDate())
})
}
这就是它的工作原理:
changeFormat("30-Jul-2016","{YYYY}-{MM}-{DD}") // 2016-07-30
例如:
String.prototype.replacement=函数(o){
返回此.replace(/{([^{}]*)}/g,
功能(a、b){
var r=o[b];
返回typeof r=='string'| | typeof r=='number'?r:a;
}
);
};
函数更改格式(从、到){
风险值月份=[
“一月”,
二月,,
“三月”,
“四月”,
“五月”,
"六月",,
七月,,
"八月",,
"九月",,
“十月”,
十一月,,
“十二月”
];
var日期=新日期(从);
取而代之({
YYYY:date.getFullYear(),
MMM:months[date.getMonth()],
MM:date.getMonth()+1>9?date.getMonth()+1:'0'+parseInt(date.getMonth()+1),
DD:date.getDate()>9?date.getDate():“0”+parseInt(date.getDate())
})
}
日志(更改格式(“2016年7月30日”,“YYYY}-{MM}-{DD}”)代码>var d=新日期('2016年7月30日')返回无效日期谢谢@KeyurShah。。更新的回答是,它在您编辑和添加split and join后工作。var date=新日期(字符串)返回无效日期在您的情况下,它返回有效的日期对象。“新日期('2016年7月30日')”//2016年7月30日星期六00:00:00 GMT+0300(MSK)