2017-07-28 14 views
0

Ich möchte zwischen zwei Daten Differenz zu Prozent berechnen. Nur nicht Datum, Stunden benötigt, um zu skalieren. Beispiel:Berechnen Sie zwischen zwei Daten in Prozent

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

Das heutige Datum ist 01.09.2017. Wenn ich heute auf System schaue, zeige mir die Anwendung "% 47 Prozent abgeschlossen" das möchte ich.

+0

Bitte zeigen Sie uns einige Code, Sie tun die Arbeit, wir werden helfen. – Grumpy

Antwort

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>

new Date() wird ein Datum Zeichenfolge nehmen und es in Unix-Standardzeit in Sekunden drehen.

+0

Sie können den sauberen Knopf im Schnipsel verwenden, um den Code auszurichten –

+0

Wofür brauchen Sie jQuery? – Stephan

+0

check this ich habe den Eingang hinzugefügt – M0ns1f

0

Das JavaScript Date-Objekt kann in arithmetischen Ausdrücken verwendet werden. Es wird in Millisekunden konvertiert.

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

Dies ist eine einfache Klasse DiffTracker, die zwei Daten im Konstruktor akzeptiert - start und end Datum und verfügt über eine Methode getPercentage(), der den Prozentsatz von Stunden von Startdatum gegen die Gesamt Stunden vergangen zurückkehren zwischen start und end Datum.

Lassen Sie sich das folgende Szenario sehen:

Startdatum = 2017-08-23 09:00

End Date = 2017-08-24 09:00

So, jetzt die Gesamtdifferenz von Stunden

Wenn wir getPercentage() mit Datum 2017.08.24 21.00 Uhr rufen wir aufgrund der 50% sehen sollte. Wenn wir getPercentage() mit Datum 2017.08.24 03.00 nennen sollten wir aufgrund der 75% sehen, da die Differenz beträgt 18 Stunden

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

In PHP verwende ich diese Methode:

<?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; 
} 

Hoffe, das hilft!

0

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

Auch wenn eines Tages zeigt es 100%

Verwandte Themen