2012-08-17 18 views
5

DateDiff関数に問題があります。私は2つの日時の違いを理解しようとしています。私はこの投稿(What's the best way to calculate date difference in Javascript)を読んでおり、このチュートリアル(http://www.javascriptkit.com/javatutors/datedifference.shtml)も見ましたが、私はそれを得ることができません。Javascript DateDiff

ここでは、私が成功することを試みたのです。誰かが私に何をしているのか、どうすれば簡単にできるのか教えてください。少しコード化されたようだ...?

//Set the two dates 
var currentTime = new Date(); 
var month = currentTime.getMonth() + 1; 
var day = currentTime.getDate(); 
var year = currentTime.getFullYear(); 
var currDate = month + "/" + day + "/" + year; 
var iniremDate = "8/10/2012"; 

//Show the dates subtracted 
document.write('DateDiff is: ' + currDate - iniremDate); 

//Try this function... 
function DateDiff(date1, date2) { 
    return date1.getTime() - date2.getTime(); 
} 

//Print the results of DateDiff 
document.write (DateDiff(iniremDate, currDate); 

答えて

5

最初に試してから引き算を行います。とにかく文字列を引くことはできないので、結果はNaNになります。

2番目のtrryには、クローズがありません。)です。それ以外は、文字列にgetTimeと呼んでいます。 new Date(...).getTime()を使用する必要があります。日付を減算すると、ミリ秒単位で結果が得られることに注意してください。あなたは、フルデイ/時間/などを取り出すことによってそれをフォーマットすることができます。ここでの作業例をご希望の方には

+0

あなたが言うとおり、それは負の値を示すでしょう。負の値が表示されるため、これは正しいと思われますか? \t \t document.write(新しい日付(iniremDate) - 新しい日付(currDate)); \t \t \t \t関数DateDiff関数(DATE1、DATE2){ \t \tリターンdate1.getTime() - date2.getTime()。 \t \t} \t \t \t \t \tのdocument.write(DateDiff関数(新しい日付(iniremDate)、新しい日付(currDate)))。 –

+0

'iniremDate'は8月10日で、今は17日目ですが、明らかに負の値になります。反対のものを減算するには、 'date2'から' date1'を減算するだけです。 – pimvdb

+0

戻ってきた値は-604800000です。それはそれが長秒前にそれを過ぎたことを意味します。 –

9

わかりましたが、簡単なDateDiff関数の負の値に日によって日付の差分を伝えEX(日付がすでに過ぎ)または正(日が来ている)です。

EDIT:それはあなたのための足の仕事をして、この場合日が経過したことを意味-10にするには、結果を変換しますので、私はこのスクリプトを更新しました。 currDateとiniPastedDateの日付を入力してください。 jQueryのまたは任意の他のサードパーティのライブラリを含むように

//Set the two dates 
var currentTime = new Date() 
var currDate  = currentTime.getMonth() + 1 + "/" + currentTime.getDate() + "/" + currentTime.getFullYear() //Todays Date - implement your own date here. 
var iniPastedDate = "8/7/2012" //PassedDate - Implement your own date here. 

//currDate = 8/17/12 and iniPastedDate = 8/7/12 

function DateDiff(date1, date2) { 
    var datediff = date1.getTime() - date2.getTime(); //store the getTime diff - or + 
    return (datediff/(24*60*60*1000)); //Convert values to -/+ days and return value  
} 

//Write out the returning value should be using this example equal -10 which means 
//it has passed by ten days. If its positive the date is coming +10.  
document.write (DateDiff(new Date(iniPastedDate),new Date(currDate))); //Print the results... 
+1

これは非常に限られていることに注意してください。 'getDay'は曜日を返しますので、両方の日付が同じ週にある場合にのみ使用できます(' iniremDate = "8/8/2012" )。 – pimvdb

+0

@pimvdbどうすればgetTimeを使用すれば、それはどの日付でも機能しますか? –

+1

'getTime'は現在の週やそれに類するものではありません。それはあなたのニーズに信頼できるので、日付ごとに固有の番号を与えます。唯一の問題は、ミリ秒の違いを自分で日差に変換する必要があることです。 – pimvdb

2
function setDateWeek(setDay){ 
    var d = new Date(); 
    d.setDate(d.getDate() - setDay); // <-- add this 
    var curr_date = d.getDate(); 
    var curr_month = d.getMonth() + 1; 
    var curr_year = d.getFullYear(); 
    return curr_date + "-" + curr_month + "-" + curr_year; 
} 


setDateWeek(1); 
0

必要はありません。

タイトルタグに入力日付の形式を指定します。

HTML:

<スクリプトタイプ= "テキスト/ javascriptの" SRC = "http://services.iperfect.net/js/IP_generalLib.js">

利用javascript関数:

IP_dateDiff(strDate1、strDate2、strDateFormat、デバッグ[真/偽])

警告(IP_dateDiff('11 -12-2014' 、 '2014年12月12日'、 'DD-MM-YYYY'、false)を);

IP_dateDiff関数は日数を返します。