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. 1日追加(上記の#3ごと)
  6. 新しい日が土曜日か日曜日かを確認します。そうである場合は、#5に戻ります。
  7. 新しい日が休日リストに含まれているかどうかを確認します。含まれている場合は、#5に戻ります。
  8. 配列に新しい日付を追加します
  9. エントリが10個になるまで繰り返します

これにより、アレイ内で次の10営業日が得られるはずです。日付ピッカーに記入する必要があるものを選択してください。

于 2012-10-10T20:38:07.700 に答える