2017-07-15 204 views
0

我试图计算使用JavaScript时间之间的差异。但我一直在控制台中得到NaN的结果。我使用JavaScript和后期时间从localStorage的小时的时差与小数点后两位小数点差

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)) 

时从localstorage读取15/7/2017 9:30:46

+0

什么是你想要的输出? –

+0

'date2'是一个字符串,'date1'是一个字符串,当你减去两个字符串时,你会发生什么? –

回答

0

您需要更改日期格式点点This may Help you并解析这些,因为这些都是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

的localStorage将存储的任何对象的字符串化版本,获取当前时间,你需要分析它。如果你将它转换到毫秒,则还需要将它解析为数字,它只能保存字符串

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

然后转换diff来时/分/秒,你的逻辑

0

我不是舒尔什么youre试图在这里做:

date2 - date1 

这些是展位字符串,你不能减去他们。然而,你可能将它们转换为毫秒自1970年以来然后你可以做数学:

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 */)); 

您可以overthink的存储格式。解析它很复杂。

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

+0

它仍然读取NaN – user6579134

+0

@ user6579134是。编辑 –