2017-07-28 14 views
0

パーセントとの2つの日付差を計算したいと思います。日付のみではなく、時間を変える必要があります。 例:2つの日付間のパーセント値を計算する

22-08-2017 09:00 start date, 
30.09.2017 22:00 finish date, 

今日の日付が01.09.2017です。今日のシステムを見ると、アプリケーションは "%47%完了しました"と私に伝えたいと思います。

+0

私たちにいくつかのコードを表示してください。 – Grumpy

答えて

0

function getpercent(){ 
 
var strt = new Date(document.getElementById('start').value).getTime(); 
 

 
var end = new Date(document.getElementById('end').value).getTime(); 
 

 
var current = new Date(document.getElementById('current').value).getTime(); 
 

 
var completed = ((current - strt)/(end - strt)) * 100; 
 
document.getElementById('percent').innerHTML = completed+"%"; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<p>start <input id="start" type="date" /></p> 
 
<p>end <input id="end" type="date" /></p> 
 
<p>current <input id="current" type="date" /></p> 
 
<p>percent <span id="percent"></span></p> 
 
<button onclick="getpercent()">get percent</button>

新しいDate()は、日付文字列を取り、秒などのUnix標準時間にそれを向けるだろう。

+0

スニペットの整頓ボタンを使用してコードを整列できます –

+0

jQueryには何が必要ですか? – Stephan

+0

これをチェックする私は入力を追加 – M0ns1f

0

javascriptのDateオブジェクトは、算術式で使用できます。ミリ秒に変換されます。

var start, finish, midpoint, percent, elapsed; 

start = new Date(2017, 8, 22, 9); 
finish = new Date(2017, 9, 30, 22); 
midpoint = new Date(2017, 8, 29, 12); 

elapsed = midpoint - start; 
percent = (elapsed/(finish - start)) * 100; 

console.log('elapsed', elapsed, ' ms', percent, ' % complete'); 

https://jsfiddle.net/fwb3g4nc/1/

0

これはコンストラクタ2つの日付を受け入れ、単純なクラスDiffTrackerある - startend日付と合計時間に対して、開始日からの経過時間の割合を返します。ひとつの方法getPercentage()を持っていますstartendの間です。

のは、次のシナリオを見てみましょう:

開始日= 2017年8月23日9時

終了日= 2017年8月24日9時

だから今の合計違いを時間我々は日付2017年8月24日21時でgetPercentage()を呼び出した場合、我々は50%の結果が表示されるはずです

です。 我々は日付2017年8月24日3時でgetPercentage()を呼び出すと差は18時間、私はこの方法を使用するPHPで

var diffTraker = new DiffTracker(new Date(2017, 7, 23, 9), new Date(2017, 7, 24, 9)); 
 

 
console.log('Start Date'); 
 
console.log(new Date(2017, 7, 23, 9)); 
 
console.log('-------------------'); 
 
console.log('End Date'); 
 
console.log(new Date(2017, 7, 24, 9)); 
 
console.log('-------------------'); 
 
console.log(diffTraker.getPercentage(new Date(2017, 7, 23, 21)) + '% from start date (' + new Date(2017, 7, 23, 21) + ')'); 
 
console.log(diffTraker.getPercentage(new Date(2017, 7, 24, 3)) + '% from start date (' + new Date(2017, 7, 24, 3) + ')'); 
 
console.log(diffTraker.getPercentage(new Date(2017, 7, 24, 5)) + '% from start date (' + new Date(2017, 7, 24, 5) + ')'); 
 

 
function DiffTracker(startDate, endDate){ 
 
    var self = this; 
 
    self.start = startDate; 
 
    self.end = endDate; 
 
    self.totalHours = getDiffHours(self.start, self.end); 
 
    
 
    self.getPercentage = function(date){ 
 
    var hoursFromStart = getDiffHours(self.start, date); 
 
    return (hoursFromStart * 100/self.totalHours).toFixed(2); 
 
    } 
 
    
 
    function getDiffHours(start, end){ 
 
    /* 36e5 is the scientific notation for 60*60*1000, dividing by which converts the milliseconds difference into hours */ 
 
    return Math.abs(start - end)/36e5; 
 
    } 
 
}

0

あるので、我々は75%の結果が表示されます。

<?php 
$FirstDate = "22-08-2017 09:00"; 
$SecondDate = "30.09.2017 22:00"; 


$start = strtotime($FirstDate); 
$finish = strtotime($SecondDate); 

$diff  = $finish - $start; 

$progress = time() - $start; // You might have to modify the time function depending on where you live 
$procent = ($progress/$diff)*100; 

$width = round($procent); 

// The if statment below just makes sure that it does not show 110% for example. 

if($width >=100){ 
    echo "100 %"; 
}else{ 
    echo $width; 
} 

0

$ FirstDate = " -08-2017 09:00"; $ SecondDate = " .09.2017 22:00";

1日であっても100%を示します

関連する問題