1

ユーザーが開始日を入力すると、終了日が自動的に追加されるこのコードがあります。終了日は開始日の +3 日です。問題は 2 月 3 月 26 日から 31 日以降であるため、間違った終了日が出力されます。26-31 から常に間違った終了日を出力します。問題はうるう年だと思いますが、それを修正する方法がわかりません。私を助けてください。

これはコードです:

<input type="date" name="start_date" id="start" onKeyUp="date()">
<input type="text" name="end_date" id = "end" onKeyUp="date()" disabled />
        <script type = "text/javascript">
function date() {
var startdate = document.getElementById('start');
var enddate = document.getElementById('end');
//conver you selected stuff to a proper date format
var old = new Date(Date.parse(startdate.value));
//take a new date
var newdate=new Date(Date.parse(startdate.value)+24*60*60*1000*3);
// add how many days you want to add i use 3 you can use as many
newdate.setDate(old.getDate()+3);
enddate.value = (newdate.getMonth()+1)+'-'+newdate.getDate()+'-'+newdate.getFullYear(); 
}
</script>
4

2 に答える 2

2

試す

var newdate=new Date(Date.parse(startdate.value)+24*60*60*1000*3);

結果を直接操作する代わりにgetDate()

編集

番号についての説明:

  24            * 60               * 60                 * 1000                    * 3
//hours per day   minutes per hour   seconds per minute   milliseconds per second   3 days
于 2013-02-18T09:17:09.663 に答える
1

これは.setDate()、コード内で が今日の日付に適用されるため、正しく機能しないためです。日付の計算を開始する前に、両方の日付が互いに一致している必要があります。

var old = new Date(Date.parse(startdate.value)),
newdate = old;

newdate.setDate(old.getDate() + 3);

これは、うるう秒などでもうまく機能します。

于 2013-02-18T09:25:16.237 に答える