【发布时间】:2017-01-06 20:52:03
【问题描述】:
我正在尝试将年份包含在给定的日期范围内。
这样一个用户输入 2015 年 12 月 1 日 - 7 月。 1st 2016。我可以得到 2015,但我还需要包括 2016。
目前我正在将两个日期之间的差异作为年份:
var tmpStart = moment($scope.dates1.startDate);
var tmpEnd = moment($scope.dates1.endDate);
var years = tmpEnd.diff(tmpStart, 'year');
for (var i = 0; i < years+1; i++) {
var tmpD = moment($scope.dates1.startDate);
tmpD.add(i, 'years');
sc.dtColumns.push(DTColumnBuilder.newColumn(tmpD.format('YYYY')).withTitle('Total ' + tmpD.format('YYYY')));
}
最好的方法是什么?我确信我可以将年份解析为 int 并进行比较以查看有多少年,但我觉得这不是正确的方法。
【问题讨论】:
-
你不需要在里面呆一会儿。只需获取开始/结束年份,然后在它们之间循环。:
s = 2014; e = 2016; for(y = s, y<=e, y++) { ...}并获取 2014/2015/2016 - 这并不像曾经(再次)将是一个“闰年”,整个年份都会被跳过 -
所以基本上只是将年份解析为 int 并进行比较
-
差不多。无论如何,除了生成年份值之外,您什么也没做,因此立即为它敲打是没有意义的。只需将年份视为整数。现在,如果您确实必须处理部分年份或时髦的增量(“+3 个月 2 天”)或其他什么,那么请坚持使用时刻。但在这种情况下,肯定越简单越好。
标签: javascript momentjs