我有以下JSON响应,我正在尝试格式化日期。
{
"webservice_status": {
"status": "SUCCESS",
"message": ""
},
"informationList": [{
"TestNumber": "12",
"Color": "RED",
"dateOfPaint": "10242016",
"location": "Wall"
}, {
"TestNumber": "13",
"Color": "BLUE",
"dateOfPaint": "10232016",
"location": "Floor"
}, {
"TestNumber": "14",
"Color": "GREEN",
"dateOfPaint": "1052016",
"location": "Wall"
}, {
"TestNumber": "15",
"Color": "BLACK",
"dateOfPaint": "10232016",
"location": "Wall"
}]
}
当我尝试按如下方式进行时刻测试时,我在下面的控制台日志中得到Invalid Date
:
this.processJSON = function (data_, textStatus_, jqXHR_){
var dateMoment = data_.informationList[0].dateOfPaint;
console.log("The date we are testing:" + dateMoment);
console.log(moment(dateMoment).format('MM/DD/YYYY'));
}
不是在这里使用时刻,而是可以在10242016
之间添加斜杠,使其看起来像10/24/2016
,因为时刻似乎不起作用。但问题是,在JSON响应中返回的某些日期包含斜杠并且格式正确。所以在应用斜杠之前我也必须检查它。
答案 0 :(得分:1)
如果您想将字符串"10242016"
转换为date
表示,并使用"10/24/2016"
之类的字符串分隔,则可以使用.replace()
使用正则表达式,使用以下匹配项:< / p>
var dateMoment = data_.informationList[0].dateOfPaint.replace(/^(\d{2})(\d{2})(\d{4})$/, "$1"+"/"+"$2"+"/"+"$3");
<强>演示:强>
var dateOfPaint = "10242016";
var dateMoment = dateOfPaint.replace(/^(\d{2})(\d{2})(\d{4})$/, "$1"+"/"+"$2"+"/"+"$3");
console.log(dateMoment);
&#13;
答案 1 :(得分:1)
moment(String)
方法接受符合ISO 8601和RFC 2822格式的字符串:
当从字符串创建片刻时,我们首先检查字符串是否与已知的ISO 8601格式匹配,然后检查字符串是否与RFC 2822 Date time格式匹配,然后再降至{{1}的后退如果找不到已知格式。
由于您的输入不是可识别的格式,因此您应该将format参数传递给时刻解析器(moment(String, String)
)。
如果您不知道输入字符串的确切格式,但知道它可能是众多格式之一,则可以使用格式数组。
因为您的数据也可以包含new Date(string)
,您可以使用moment(String, String[])
传递/
作为第二个参数。
您可以使用format()
方法显示时刻对象的值。 ['MMDDYYYY', 'MM/DD/YYYY']
会针对format()
等无效输入打印Invalid Date
(10月有31天,10月没有第52天)。您可以使用isValid()
来了解时刻对象是否代表有效的日期/时间。
这是一个实例:
1052016
var data_ = {
"webservice_status": {
"status": "SUCCESS",
"message": ""
},
"informationList": [{
"TestNumber": "12",
"Color": "RED",
"dateOfPaint": "10242016",
"location": "Wall"
}, {
"TestNumber": "13",
"Color": "BLUE",
"dateOfPaint": "10232016",
"location": "Floor"
}, {
"TestNumber": "14",
"Color": "GREEN",
"dateOfPaint": "1052016",
"location": "Wall"
}, {
"TestNumber": "15",
"Color": "BLACK",
"dateOfPaint": "10232016",
"location": "Wall"
}]
}
var processJSON = function (data_,textStatus_,jqXHR_){
for(var i=0; i<data_.informationList.length; i++){
var dateMoment = data_.informationList[i].dateOfPaint;
console.log("The date we are testing:"+dateMoment);
console.log(moment(dateMoment, ['MMDDYYYY', 'MM/DD/YYYY']).format('MM/DD/YYYY'));
}
}
processJSON(data_);