Если объект даты для Safari генерируется так же, как это делается для Chrome, то, по крайней мере, в моей старой версии Safari код выполняется успешно, как показано ниже:
function formatDateTimeToString(date) {
var dd = (date.getDate() < 10 ? '0' : '') + date.getDate();
var MM = ((date.getMonth() + 1) < 10 ? '0' : '') + (date.getMonth() + 1);
var yyyy = date.getFullYear();
var hours = (date.getHours() < 10 ? '0' : '') + date.getHours();
var minutes = (date.getMinutes() < 10 ? '0' : '') + date.getMinutes();
return (dd + "." + MM + "." + yyyy + ' ' + hours + ':' + minutes);
}
var d = document;
d.w = d.writeln;
var date = new Date("Mon Mar 25 2019 00:00:00 GMT+0100 (CET)");
/* this works */
d.w( formatDateTimeToString(date)+"<BR>");
// output:
// 24.03.2019 16:00
Вы можете получить NaN в результате в Safari, если попытаетесь создать экземпляр объекта Date со строкой, содержащей дефисы, следующим образом:
var d = document;
d.w = d.writeln;
date = new Date("2019-03-24");
/* returns NaN */
d.w( formatDateTimeToString(date)+"<BR>");
date = new Date("03-24-2019");
/* this fails with NaN*/
d.w( formatDateTimeToString(date)+"<BR>");