繁体   English   中英

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

[英]Convert string with bad format to date type

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

31/10/2017 18:12:02

new Date()无法正常工作(我得到的日期无效),即使这样:

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

任何想法 ?

您可以将其转换为ISO格式,然后使用new Date()

 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 

更新 (如果您使用/作为日期分隔符):

 var dateStr = "2018-12-23 18:12:02".replace(/\\//g, "-").replace(" ", "T") + ".000Z"; console.log(new Date(dateStr).getTime()); 

新的Date()不起作用(我收到无效的日期)

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

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

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

您可以使用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 }]

我找到了moment.js的答案:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM