我从Web服务接收到包含日期时间的字符串,该字符串的格式为dd/MMM/yyyy hh:mm:ss
,无法更改Web服务输出以匹配此JavaScript应用程序的需求。
为简单起见,我将Web服务数据替换为具有以下值的硬编码字符串。
// The raw input from the web service
var dateOne = new Date("04/Mar/2020 08:00:00");// Invalid Date {}
// After .replace to make it valid
var dateTwo = new Date("04-Mar-2020 08:00:00");// Sat Mar 04 2000 10:00:00
dateOne无效(以前是有效的,但最近证明很困难)
dateTwo有效但不正确(根据时区,从8到10的时间更改是正确的,但我的时区不是过去20年)
如果有人能指出我正确的方向,将不胜感激。 预先谢谢你。
答案 0 :(得分:2)
Unfortunatley从日期字符串中初始化日期(您的操作方式)为strongly discouraged
注意:由于浏览器的差异和不一致,强烈建议不要使用Date构造函数(和Date.parse(),以相同的方式)解析日期字符串。
- 仅按惯例,对RFC 2822格式字符串的支持。
- 对ISO 8601格式的支持的不同之处在于,仅日期的字符串(例如“ 1970-01-01”)被视为UTC,而不是本地。
但是,您可以使用momentJS
显式解析日期字符串。
const dateString = '04/Mar/2020 08:00:00';
const date = moment(dateString, 'DD/MMM/YYYY HH:mm:ss');
console.log(date);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>