如何很好地显示由两个日期组成的日期范围?我正在寻找的主要事情是,如果两个日期相同,则不要显示两次。我在想这样的事情:
2015年5月5日星期二19:31-20:31 GMT
星期一,04 19:31 - 2015年5月5日星期二,20:31
如果有一些重叠可以,例如:
5月4日星期一,19:31 - 2015年5月5日星期五,20:31
目标是为用户提供一些好看的东西。我不知道从哪里开始这个 - 现在我只知道如何显示两个完整日期。我没有能够在我的搜索中找到任何东西 - 很多关于如何格式化个别日期,但没有什么可以格式化两个日期。
我使用的是AngularJS,但如果你知道如何在没有Angular的情况下做到这一点,那就没关系了。
答案 0 :(得分:2)
您问题中的标签建议您要格式化AngularJS中的日期范围。但是,这似乎是一个普遍的Javascript问题,除非你想要使用Angular过滤器优雅地解决问题。
我建议您使用MomentJS,它具有许多实用功能,可用于格式化和比较日期。 moment-range
也可以为您提供一些方便的方法,但我没有看到任何格式化方法。
var date1 = momentjs('2015-05-05 12:15');
var date2 = momentjs('2015-05-10 12:15');
这些日期有重叠的年,月和时间。您可以使用date1.isSame(date2, 'year')
检测到此信息。用月,日,时等做这个。
然后使用date1.format(...) + ' - ' + date2.format(...)
格式化您的范围,具体取决于日期属性相同。
如果需要,请将所有代码包装在Angular过滤器中:
angular.module('myApp').filter('dateRange', function () {
return function (date1, date2) {
// date range stuff here
};
});
在date1
date2
和$scope
后,在模板中使用过滤器
{{date1 | dateRange:date2}}