将stringDate转换为新的Date()并以相同格式再次返回

时间:2019-03-07 12:50:32

标签: javascript

我有多个带有日期的字典,我需要找到最高的字典。要比较我从字典中获取日期的日期,请使用new Date(dateString)对其进行转换,以便能够比较日期以获取最新日期。

dateString看起来像这样:2019-03-07 08:40:16

我使用new Date(dateString)进行了转换,看起来像这样:
 Thu Mar 07 2019 08:40:16 GMT+0000 (Greenwich Mean Time)

然后我需要将其转换回原始格式YYYY-MM-DD HH:MM:SS

执行此操作的最佳方法是什么,我认为应该可以为new Date()定义输出格式,但找不到任何东西。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

我建议您使用Moment https://momentjs.com/ lib进行时间比较和格式化。

const date1 = moment('2019-03-06 08:40:16', 'YYYY-MM-DD HH:mm:ss');

const date2 = moment('2019-03-07 08:40:16', 'YYYY-MM-DD HH:mm:ss');

const isBefore = date1.isBefore(date2);

console.log('isBefore', isBefore);

console.log('formatted date:', date2.format('YYYY-MM-DD HH:mm:ss'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.js"></script>

答案 1 :(得分:0)

这当然不是最优雅的解决方案,但是基于dateString的转换,您可以使用内置在methods中的 Date()对象来重构它。

var dateString = "2019-03-07 08:40:16";
var temp = new Date(dateString);
var temp2 = "" + temp.getFullYear() + "-" + (temp.getMonth() + 1) + "-" + temp.getDate() + " " + temp.getHours() + ":" + temp.getMinutes() + ":" + temp.getSeconds();
console.log(temp2);

如果您打算对多个日期执行此操作,则可以考虑使用自己的方法来增强Date对象,例如:

Date.prototype.reformat = function() {
  return this.getFullYear() + "-" + (this.getMonth() + 1) + "-" + this.getDate() + " " + this.getHours() + ":" + this.getMinutes() + "." + this.getSeconds();
}
var dateString = "2019-03-07 08:40:16";
var temp = new Date(dateString);
console.log(temp.reformat());