【发布时间】:2013-01-21 01:58:25
【问题描述】:
我在 JavaScript 中有两个日期,start 和 finish,由 Moment.js 解析。如果start 在finish 之后而不需要创建第三个日期,那么交换它们的最有效方法是什么?通常,日期将是这样一个函数的参数:
function getDates(start, finish) {
var start_date = moment(new Date(start));
var finish_date = moment(new Date(finish));
if (start_date.diff(finish_date) > 0) {
// Swap code goes here...
}
}
人们可能想要交换日期的原因是因为某些函数的定义方式是即使交换日期也会返回相同的结果,但该函数需要知道哪个日期更早。例如,Microsoft Excel 中的YEARFRAC 就是这样工作的。您可以查看我对该函数 here 的实现,以获取次优日期交换的示例。
提前感谢您的帮助!
【问题讨论】:
-
您知道您可以从字面上获取某个日期的 MS 时间,然后将其设置为另一个日期,类似于 (new Date().getTime()) 然后在另一个日期上设置日期跨度>
-
为什么不能有第三个变量? var x = start_date;开始日期 = 完成日期;完成日期 = x。这样您就不会创建 第三个日期,尽管我怀疑 第三个变量 就是您的意思。如果是这样,为什么这是一个约束?
-
我不知道你是否应该四处交换日期,除非一个比另一个异常热......
-
只是尽量提高效率。对于带有二元运算符的数字,有很多方法可以做到这一点,我很想知道是否有人设计了一种方法来对日期做类似的事情。
-
@thang,我添加了解释为什么需要进行这种交换。
标签: javascript momentjs