0

I am trying to get: 1. a time difference to be calculated; 2. return the date in a specific format; 3. different variables to allow me to breakdown the date in different formats. e.g. YYYY alone, HH alone, in order to calculate time difference at this level.

The code below works for Chrome, Firefox, but it is not working in Safari. when I test all variables in the console in Safari I get a "NaN" response for any var after final_date. I think it could be something with the date function but I don't know how to fix it so that it works across browsers.

var now = new Date(); //todays date
var convert_string = now.toUTCString();
var split_convert_string = convert_string.split(" ");
 //var split_convert_string_1= split_convert_string.split(",");
var split_convert_string_hour = split_convert_string[4].split(":");

var end = "07/04/2020 14:00:00"; // another date
var split = end.split("/");
  var split_year = split[2].split(" ");
  var split_hour = split_year[1].split(":");// COMPLETE TIME
  var split_month =split[1];// MONTH
  var split_day= split[0];// DAY
  var HH = split_hour[0];//HH
  var completed_date = split[0]+"/"+split[1]+"/"+split_year[0]
var completed_time = split_hour[0]+":"+split_hour[1]+":"+split_hour[2]


var hrDiff=Math.abs(Number(split_hour[0]) - Number(split_convert_string_hour[0]));
    var minDiff=Math.abs(Number(split_hour[1]) - Number(split_convert_string_hour[1]));
var secDiff=Math.abs(Number(split_hour[2]) - Number(split_convert_string_hour[2]));


var final_date=new Date(split_year[0]+"-"+split[1]+"-"+split[0]+" "+split_hour[0]+":"+split_hour[1]+":"+split_hour[2]);

//var end = new Date("2020-03-09 14:00:00 "); // another date
var diff = new Date(now.getTime() - final_date.getTime());
var year = diff.getFullYear() -1970;
var hour = diff.getHours();
var month = diff.getMonth();
var day = diff.getDate()-1;
var hour = (Math.abs(now.getTime() - final_date.getTime()) / 36e5);
var hours= Math.round(hour);
var day_difference= now - final_date;
var day_difference_convert= Math.floor(day_difference/1000/60/60/24);

var difference = year +" years " + month + "Months " + day + "Days " + hrDiff + "hours "+minDiff+" min "+secDiff+" sec";    


//var diff = (nowdate - enddate)/3600000;
//var diff = Math.floor(Math.abs(nowdate - enddate) / 36e5);
//var diff = Math.abs((now.getTime() - final_date.getTime())/36e5);
//var diff = Math.abs(now.getTime() - end.getTime()) / 3600000;
ruka
  • 3
  • 1
  • You are using invalid date strings. See [What are valid Date Time Strings in JavaScript?](https://stackoverflow.com/questions/51715259/what-are-valid-date-time-strings-in-javascript/) – str Apr 08 '20 at 14:20
  • Thanks for the comment. Are these invalid when they are processed by Safari? Also, what is the invalid date sting? It looks like the process is failing when I am actually trying to assemble the date format that I need. Any further help is much appreciated. – ruka Apr 09 '20 at 12:38

0 Answers0