将格式错误的字符串转换为日期类型

时间:2018-02-20 17:41:20

标签: javascript angular typescript

我试图将这种字符串转换为Typescript中的日期类型以进行排序:

31/10/2017 18:12:02

新的Date()无效(我收到无效日期),即使是这样:

let date = moment(item1.sendedOn.toString()).format('DD/MM/YYYY h:mm:ss');
console.log(date.toString());

有什么想法吗?

4 个答案:

答案 0 :(得分:2)

您可以将其转换为ISO格式,然后使用let str = "SERR PBQR PNZC"; let strArr = str.split(""); let alphabet = []; let tempArr = []; for (i = 65; i <= 90; i++){ alphabet.push(String.fromCharCode(i)) } for (i = 0; i < strArr.length; i++) { for (j = 0; j < alphabet.length; j++) { if (strArr[i] === alphabet[j]) { tempArr.push(alphabet[(j+13)%26]); } } } console.log(tempArr);

&#13;
&#13;
new Date()
&#13;
&#13;
&#13;

更新(如果您有var dateStr = "2018-12-23 18:12:02".replace(" ", "T") + ".000Z"; console.log(new Date(dateStr).getTime()); // Use sorting on this now as it is directly comparable 作为日期分隔符):

&#13;
&#13;
/
&#13;
&#13;
&#13;

答案 1 :(得分:0)

  

新的Date()无效(我收到无效日期)

也许您显示的字符串不是您遇到问题的实际字符串,或者有空格等隐藏字符。正如您在本答案中包含的脚本中所看到的那样,您的字符串(来自您的问题)在传递给Date构造函数时不会抛出异常/错误。

&#13;
&#13;
var result = new Date('2018-12-23 18:12:02');
console.log(result);
&#13;
&#13;
&#13;

如果此脚本在您的浏览器上不起作用,则可能是浏览器特定的问题

答案 2 :(得分:0)

您可以使用momentjs来实现相同目标。

var date = moment("2018-12-23 18:12:02").format('DD-MM-YYYY');
console.log(date)
var dateObj = moment("2018-12-23 18:12:02").toDate();
console.log(dateObj)
<script type="text/javascript" src="http://momentjs.com/downloads/moment.min.js"></script>

如果你想将它与typescript和angular2

一起使用
npm install moment --save

import * as moment from 'moment';

providers: [{ provide: 'moment', useValue: moment }]

答案 3 :(得分:0)

我用moment.js找到了答案:

 let date = moment(stringDate, 'DD/MM/YYYY h:mm:ss').format();