Javascript日期表现得很奇怪

时间:2012-10-10 20:21:52

标签: javascript jquery date

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

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

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

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

任何!

1 个答案:

答案 0 :(得分:0)

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

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

无论如何,我建议采用不同的方法:

  1. 将您的假日日期转换为对象,日期为关键字
  2. 生成今天的日期
  3. 如果是中午之后,请明天约会 - d.setDate(d.getDate() + 1)
  4. 创建一个空数组
  5. 添加一天(按照上面的#3)
  6. 检查新的一天是星期六或星期日,如果是,请返回#5
  7. 检查新的一天是否在假日列表中,如果是,请返回#5
  8. 将新日期添加到数组
  9. 重复,直到您有10个条目
  10. 这应该会在您的阵列中提供接下来的10个工作日。选择填写日期选择器所需的那些。