Javascript 你看起来很奇怪

Javascript 你看起来很奇怪,javascript,jquery,date,Javascript,Jquery,Date,好的,我听说过,但我现在可以确认Javascript日期功能是一个灾难地带。我用它创造了一个怪物。我有这个计划: JSON对象包含假日日期列表及其相应的标签。 我需要找出从今天开始的5个工作日的日期(不包括JSON对象中包含的周六、周日和节假日,如果有的话)。到目前为止都是好消息。那么这5个工作日的日期将被jquery日历作为默认选定日期吞没,因为它不包含在fiddle中,因为它是无关的。(注意:日历上的开始日期是tommorow的日期)好东西又来了。然后,这一部分来了:如果是今天中午之前,我可

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

JSON对象包含假日日期列表及其相应的标签。 我需要找出从今天开始的5个工作日的日期(不包括JSON对象中包含的周六、周日和节假日,如果有的话)。到目前为止都是好消息。那么这5个工作日的日期将被jquery日历作为默认选定日期吞没,因为它不包含在fiddle中,因为它是无关的。(注意:日历上的开始日期是tommorow的日期)好东西又来了。然后,这一部分来了:如果是今天中午之前,我可以选择tommorow否则开始日期是tommorow之后的第二天。我之所以详细阐述这一点,是因为它包含在这把小提琴中

因此,问题是处理上述功能的函数的多次初始化没有产生一致的结果。在我的系统上计算5个工作日,但当我做这把小提琴时,它计算4个工作日。“第五”个工作日的日期在每次通话中递增1

任何人

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

尽可能使用
新建日期(y,m,d)
来创建日期对象,而不是提供字符串。特别是,我发现,如果您以
yyyy-mm-dd
格式指定字符串,则会得到一个相对于UTC 00:00的日期,但如果您使用
yyy/mm/dd
,则会得到一个相对于本地午夜的日期

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

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

  • 这将为您提供阵列中接下来的10个工作日。选择您需要填写日期选择器的选项。

    请解释调用
    initDate()
    四次的意义。当用户单击单选按钮时,它将被触发。有四个。所以我只是在模拟四个initDate()。谢谢你。经过两天的辛苦工作,现在终于可以工作了。抄袭日期是罪魁祸首。如果使用约定=运算符,则通过引用复制日期。