71

ユーザーが JavaScript を使用して簡単に日付を加算および減算できるようにして、エントリを日付別に閲覧できるようにしたいと考えています。

日付の形式は「mm/dd/yyyy」です。「次へ」ボタンをクリックできるようにしたいのですが、日付が「2012 年 6 月 1 日」の場合、次にクリックすると「2012 年 6 月 2 日」になります。「前へ」ボタンをクリックすると、「2012 年 5 月 31 日」になります。

うるう年、月の日数などを追跡する必要があります。

何か案は?

サーバーから日付を取得するために AJAX を使用する PS はオプションではありません。これは少しラグがあり、クライアントが必要とするユーザーのエクスペリエンスではありません。

4

13 に答える 13

97

コード:

var date = new Date('2011', '01', '02');
alert('the original date is ' + date);
var newdate = new Date(date);

newdate.setDate(newdate.getDate() - 7); // minus the date

var nd = new Date(newdate);
alert('the new date is ' + nd);

デートピッカーの使用:

$("#in").datepicker({
    minDate: 0,
    onSelect: function(dateText, inst) {
       var actualDate = new Date(dateText);
       var newDate = new Date(actualDate.getFullYear(), actualDate.getMonth(), actualDate.getDate()+1);
        $('#out').datepicker('option', 'minDate', newDate );
    }
});

$("#out").datepicker();​

JSFiddleデモ

役に立つかもしれない余分なもの:

getDate()   Returns the day of the month (from 1-31)
getDay()    Returns the day of the week (from 0-6)
getFullYear()   Returns the year (four digits)
getHours()  Returns the hour (from 0-23)
getMilliseconds()   Returns the milliseconds (from 0-999)
getMinutes()    Returns the minutes (from 0-59)
getMonth()  Returns the month (from 0-11)
getSeconds()    Returns the seconds (from 0-59)

良いリンク: MDN 日付

于 2012-06-07T12:00:53.110 に答える
41

JavaScript の Date オブジェクトで時間を加算または減算するにはgetTime()、 andを使用する必要があります。andをsetTime()使用すると、1、30、31 などの月の制限に達したときにエラーが発生します。setDate()getDate()

setTime を使用すると、オフセットをミリ秒単位で設定し、Date オブジェクトに残りを計算させることができます。

var now=new Date();
var yesterdayMs = now.getTime() - 1000*60*60*24*1; // Offset by one day;
now.setTime( yesterdayMs );
于 2013-08-25T01:33:28.017 に答える
14
startdate.setDate(startdate.getDate() - daysToSubtract);


startdate.setDate(startdate.getDate() + daysToAdd);
于 2012-06-07T12:00:13.823 に答える
8

ここで JavaScriptDateオブジェクトが役に立ちます。

Date最初のステップは、これらの文字列をインスタンスに変換することです。それは簡単にできます:

var str = "06/07/2012"; // E.g., "mm/dd/yyyy";
var dt = new Date(parseInt(str.substring(6), 10),        // Year
                  parseInt(str.substring(0, 2), 10) - 1, // Month (0-11)
                  parseInt(str.substring(3, 5), 10));    // Day

その後、あらゆる種類の便利な計算を行うことができます。JavaScript の日付はうるう年などを理解します。彼らは、正確に86,400秒の長さである「日」の理想化された概念を使用しています. それらの基本的な値は、エポック (1970 年 1 月 1 日午前 0 時) からのミリ秒数です。The Epoch より前の日付の場合は負の数になる可能性があります。

のMDN ページDateの詳細。

MomentJSのようなライブラリの使用を検討することもできます。これは、解析、日付の計算、書式設定に役立ちます...

于 2012-06-07T12:04:42.697 に答える
4
//In order to get yesterday's date in mm/dd/yyyy.


function gimmeYesterday(toAdd) {
            if (!toAdd || toAdd == '' || isNaN(toAdd)) return;
            var d = new Date();
            d.setDate(d.getDate() - parseInt(toAdd));
var yesterDAY = (d.getMonth() +1) + "/" + d.getDate() + "/" + d.getFullYear();
$("#endDate").html(yesterDAY);
        }
$(document).ready(function() {
gimmeYesterday(1);
});

ここで試すことができます:http://jsfiddle.net/ZQAHE/

于 2012-11-19T16:16:41.403 に答える
3

javascriptで日付を操作することは、常に少し面倒です。私はいつもライブラリを使うことになります。Moment.jsとXDateはどちらも素晴らしいです:

http://momentjs.com/

http://arshaw.com/xdate/

フィドル:

http://jsfiddle.net/39fWa/

var $output = $('#output'),
    tomorrow = moment().add('days', 1);

$('<pre />').appendTo($output).text(tomorrow);

tomorrow = new XDate().addDays(-1);

$('<pre />').appendTo($output).text(tomorrow);

</ p>

于 2012-06-07T12:12:05.087 に答える
3

これが役立つかもしれません

    <script type="text/javascript" language="javascript">
        function AddDays(toAdd) {
            if (!toAdd || toAdd == '' || isNaN(toAdd)) return;
            var d = new Date();
            d.setDate(d.getDate() + parseInt(toAdd));

            document.getElementById("result").innerHTML = d.getDate() + "/" + d.getMonth() + "/" + d.getFullYear();
        }

function SubtractDays(toAdd) {
            if (!toAdd || toAdd == '' || isNaN(toAdd)) return;
            var d = new Date();
            d.setDate(d.getDate() - parseInt(toAdd));

            document.getElementById("result").innerHTML = d.getDate() + "/" + d.getMonth() + "/" + d.getFullYear();
        }
    </script>
    ---------------------- UI ---------------
        <div id="result">
        </div>
        <input type="text" value="0" onkeyup="AddDays(this.value);" />
        <input type="text" value="0" onkeyup="SubtractDays(this.value);" />
于 2012-06-07T12:02:23.890 に答える
2

私が好きな方法は、日付オブジェクトがある場合、それから別の日付オブジェクトを減算して差を取得できることです。日付オブジェクトは、特定の日付からのミリ秒に基づいています。

var date1 = new Date(2015, 02, 18); // "18/03/2015", month is 0-index
var date2 = new Date(2015, 02, 20); // "20/03/2015"

var msDiff = date2 - date1; // 172800000, this is time in milliseconds
var daysDiff = msDiff / 1000 / 60 / 60 / 24; // 2 days

これが日付を減算する方法です。それらを追加したい場合は?date1 + date2 エラーが発生します..しかし、ミリ秒で時間を取得したい場合は、次を使用できます。

var dateMs = date1 - 0;
// say I want to add 5 days I can use
var days = 5;
var msToAdd = days * 24 * 60 * 60 * 1000; 
var newDate = new Date(dateMs + msToAdd);

0 を減算することで、日付オブジェクトをミリ秒形式に変換します。

于 2015-03-18T11:05:00.407 に答える
1

ネイティブの JavaScript Date オブジェクトを使用して、日付を追跡できます。現在の日付が表示され、カレンダー固有のものを追跡でき、さまざまなタイムゾーンの管理にも役立ちます. 日/時間/秒を加算および減算して、作業中の日付を変更したり、新しい日付を計算したりできます。

詳細については、このオブジェクト リファレンスをご覧ください。

日にち

それが役立つことを願っています!

于 2012-06-07T11:59:51.897 に答える
1

日付を追加するためのこれらの関数はすべて間違っています。Date 関数に間違った月を渡しています。問題の詳細: http://www.domdigger.com/blog/?p=9

于 2013-01-13T10:21:00.003 に答える
0

私が使用した最高の日付ユーティリティは、いくつかの理由からdate-fnsです。

  • ネイティブの JavaScriptDate形式を使用します。
  • 不変; 純粋な関数を使用して構築され、渡されたものを変更する代わりに、常に新しい日付インスタンスを返します。
  • 基本単位; 必要な関数だけをインポートします。

パッケージマネージャー:

"date-fns": "^1.30.1"

コード:

import { addDays, subDays } from 'date-fns'

let today = new Date()
let yesterday = subDays(today, 1)
let tomorrow = addDays(today, 1)

シンプルで素晴らしい。

于 2018-12-24T14:29:17.290 に答える