2017-07-15 3 views
0

Ich versuche, die Stunden Unterschied zwischen Zeiten mit Javascript zu berechnen. Aber ich bekomme die Ergebnisse NaN in der Konsole. Ich erhalte die aktuelle Zeit Javascript und die späte Zeit von der localstorage mitrunder Stundenunterschied auf 2 Dezimalstellen mit Javascript

var log_time = localStorage.getItem('login_time') 
var currentDate = new Date() 
var day = currentDate.getDate() 
var month = currentDate.getMonth() + 1 
var year = currentDate.getFullYear() 
var hour = currentDate.getHours(); // => 9 
var minute= currentDate.getMinutes(); // => 30 
var second= currentDate.getSeconds(); // => 51 
console.log(log_time); 

var today = day + "/" + month + "/" + year 
var time = hour + ":" + minute + ":" + second 
console.log(today+' '+time); 
var date1 = (log_time); 
var date2 = (today+' '+time); 
var hours = Math.abs(date2 - date1)/36e5; 
console.log(hours.toFixed(2)) 

die Zeit von der localstorage15/7/2017 9:30:46

+0

was ist Ihre gewünschte Ausgabe? –

+0

'date2' ist eine Zeichenkette,' date1' ist eine Zeichenkette. Was erwarten Sie, wenn Sie zwei Zeichenketten subtrahieren? –

Antwort

0

Sie benötigen Datumsformat wenig This may Help you und auch jene Daten analysieren ändern, weil diejenigen, Formiat sind stirng.

Working Fiddle

var log_time1 = '2017-07-15 09:30:46';//Examples of ISO format: YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS. 

var log_time = new Date(log_time1)//string parsing date 

var currentDate = new Date() 
var day = currentDate.getDate() 
var month = currentDate.getMonth() + 1 
var year = currentDate.getFullYear() 
var hour = currentDate.getHours(); // => 9 
var minute= currentDate.getMinutes(); // => 30 
var second= currentDate.getSeconds(); // => 51 


var today = year + "-" + month + "-" + day 
var time = hour + ":" + minute + ":" + second 
var date1 = (log_time); 
var test_date2 = (today+' '+time); 

var date2= new Date(test_date2);//string parsing date 

var hours = Math.abs(date2 - date1)/36e5; 
alert(hours.toFixed(2)) 
0

local liest speichert Zeichenfolgeversion irgendeines Objekts, müssen Sie es analysieren. Wenn Sie es auf Millisekunden konvertiert dann auch müssen Sie es Nummer zu analysieren, kann es nur String

var earlierDate = new Date(localStorage.getItem('login_time')) 
// or var earlierDate = parseInt(localStorage.getItem('login_time')) 
var currentDate = new Date() 
var diff = currentDate - earlierDate; 

Dann konvertieren diff Stunden/Minuten/Sekunden mit Ihrer Logik speichern

0

Im nicht sicher, was du versuchen, hier zu tun:

date2 - date1 

Dies sind booth strings, Sie können sie nicht subtrahieren. Allerdings können Sie sie zu Millisekunden konvertieren könnte seit 1970 denen könnte man dann tun Math auf:

var log_time = localStorage.getItem('login_time').split(" "); 

log_time[0]=log_time[0].split("/").reverse().map((el,i)=>i?("0"+el).slice(-2):el).join("-");//5/4/2017 => 2017-04-05 
log_time[1]=("0"+log_time[1]).slice(-8);// 9:30:10 => 09:30:10 

var difference= new Date() - new Date(log_time.join("T")); 
var hours=Math.floor(difference/(1000*60*60 /* one hour in ms */)); 

Sie können das gespeicherte Format überdenken. Es ist ziemlich kompliziert, es richtig zu analysieren.

http://jsbin.com/fofowayata/edit?console

+0

es liest immer noch NaN – user6579134

+0

@ user6579134 yep. bearbeitet –

Verwandte Themen