[英]Invalid Date on validation Date of js
这是上一个问题的延续
我正在尝试解析来自API的字符串,以便能够使用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));
使用2种不同的方法,但是我创建的日期都不适合js的Date API,有帮助吗?
我认为这可以满足您的需求。
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'));
: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'
尝试这个
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的语言。 通常,较长的时间戳将适用于几乎所有api。
由于这不是实际的日期格式。 您可以根据需要使用矩来格式化
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以获取更多选项
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.