0

好的,我听说过它,但我现在可以确认 Javascript 日期功能是一个灾难区。我用它创造了一个怪物。我有这个程序:

JSON 对象包含假期日期列表及其各自的标签。我需要找出从今天起5 个工作日的日期(不包括 JSON 对象中包含的星期六、星期日和节假日。)到目前为止的好东西。然后这 5 个工作日的日期将被 jquery 日历吞噬,作为默认选择的日期,它不包含在小提琴中,因为它无关紧要。(注意:日历上的开始日期是明天的日期) 又是好东西。那么,这部分来了:如果是在今天中午之前,我可以选择明天,否则开始日期是明天的后天。我正在详细说明这一点,因为它包含在这个小提琴中。

所以问题是处理上述功能的函数的多次初始化不会产生一致的结果。它在我的系统上计算 5 个工作日,但是当我制作这个小提琴时,它正在计算 4。“第 5 个”工作日的日期在每次调用时递增 1。

http://jsfiddle.net/xXQ7j/27/

任何人!

4

1 回答 1

0

您的问题可能是由时区问题引起的。

只要有可能,您应该使用它new Date(y, m, d)来创建一个日期对象,而不是提供一个字符串。特别是,我发现如果您指定格式的字符串,您将获得相对于 00:00 UTC 的日期,yyyy-mm-dd但如果您使用yyyy/mm/dd.

无论如何,我会建议一种不同的方法:

  1. 将您的假期日期转换为对象,日期是关键
  2. 生成今天的日期
  3. 如果是在中午之后,请获取明天的日期 -d.setDate(d.getDate() + 1)
  4. 创建一个空数组
  5. 添加一天(根据上面的#3)
  6. 检查新的一天是周六还是周日,如果是,返回#5
  7. 检查新的一天是否在假期列表中,如果是,请返回#5
  8. 将新日期添加到数组
  9. 重复直到你有 10 个条目

这应该会给您阵列中接下来的 10 个工作日。选择您需要填写日期选择器的那些。

于 2012-10-10T20:38:07.700 回答