我正在尝试解析来自API的String,以便能够使用js API将它们解析为日期
我最终编写了这样的代码:
var date = "01-09-2017 23:59:59";
var dateSplitted = date.split(" ");
var dateSplittedBySpace = dateSplitted[0]+"T"+dateSplitted[1]+":000Z";
dateSplitted=dateSplittedBySpace.split("-");
var finalDate = dateSplitted[1]+"-"+dateSplitted[0]+"-"+dateSplitted[2];
console.log(finalDate);
console.log(new Date(finalDate));
dateSplitted= date.split("-");
var yearHour= dateSplitted[2].split(" ");
finalDate= yearHour[0]+"-"+dateSplitted[1]+"-"+dateSplitted[0]+"T"+yearHour[1]+":000Z";
console.log(finalDate);
console.log(new Date(finalDate));
有两种不同的方法,但是我创建的日期似乎都不适合js的Date API,有什么帮助吗?
答案 0 :(得分:1)
我认为这可以满足您的需求。
function stringToDate(dateString) {
const
dateAndTime = dateString.split(' '),
dateParts = dateAndTime[0].split('-');
// The array will be [01 (day), 09 (month), 2017 (year)], by reversing the
// array the date parts will be in the order as needed [year, month, day].
dateParts.reverse();
const
// ES6 syntax.
//isoDateString = `${dateParts.join('-')} ${dateAndTime[1]}.000Z`;
// Old school syntax
isoDateString = dateParts.join('-') + ' ' + dateAndTime[1] + '.000Z';
return new Date(isoDateString);
}
console.log(stringToDate('01-09-2017 23:59:59'));
console.log(stringToDate('31-12-2017 23:59:59'));
答案 1 :(得分:0)
:000Z
格式错误,应为.000Z
由于您的格式为YYYY-MM-DD
,我建议您拆分所有内容并生成新的Date
对象
var dateStr = "01-09-2017 23:59:59";
var reg = /(\d{2})-(\d{2})-(\d{4}) (\d{2}):(\d{2}):(\d{2})/;
var dateArr = reg.exec(dateStr);
var date = dateArr[3] + "-" +
dateArr[2] + "-" +
dateArr[1] + 'T' +
dateArr[4] + ':' +
dateArr[5] + ':' +
dateArr[6] + '.000Z';
console.log(new Date(date));
// => Sat Sep 02 2017 02:59:59 GMT+0300 (IDT)
如果您不需要TZ,可以删除'.000Z'
答案 2 :(得分:0)
试试这个
array = "01-09-2017 23:59:59".split(' ');
date = array[0].split('-');
time = array[1].split(':');
realDate = new Date(date[2],new Number(date[1])-1,date[0],time[0], time[1],time[2],0);
console.log(realDate.toString());
此外,如果您告诉API,它会有所帮助。特别是api的语言。通常,长时间戳几乎适用于所有apis。
答案 3 :(得分:-1)
因为那不是实际的日期格式。您可以根据需要使用片刻格式
var date = "01-09-2017 23:59:59";
var date2 = new Date(date);
var dateFormat = "YYYY-DD-MMTHH:mm:ss";
var finalDate = moment(date2).format(dateFormat);
console.log(finalDate);
console.log(moment.utc(date2).format(dateFormat)); //for UTC
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
在大多数时候都会派上用场。查看momentjs.com了解更多选项