Ich hatte das gleiche Problem. new Date()
auf Samsung Smart TVs bekommt nicht die Zeit entsprechend der aktuellen Einstellung, sondern erhält stattdessen die zugrunde liegende Systemzeit. Es gibt immer auch einen UTC-Zeitstempel zurück.
Zum Glück gibt es eine API-Funktion, GetEpochTime()
, mit der Sie es (irgendwie) reparieren können.
Hier ist der Code, den ich mit auf dem Samsung-Plattformen:
(function (OldDate) {
// Get a reference to Samsung's TIME API
var time = document.createElement('object');
time.setAttribute('classid', 'clsid:SAMSUNG-INFOLINK-TIME');
document.body.appendChild(time);
// Replace the existing Date() constructor
window.Date = function (a, b, c, d, e, f, g) {
switch (arguments.length) {
case 0:
return new OldDate(time.GetEpochTime() * 1000);
case 1: return new OldDate(a);
case 2: return new OldDate(a, b);
case 3: return new OldDate(a, b, c);
case 4: return new OldDate(a, b, c, d);
case 5: return new OldDate(a, b, c, d, e);
case 6: return new OldDate(a, b, c, d, e, f);
case 7: return new OldDate(a, b, c, d, e, f, g);
}
};
// Copy static function properties
Date.now = function() { return time.GetEpochTime() * 1000; };
Date.UTC = OldDate.UTC;
Date.parse = OldDate.parse;
})(Date);
new Date()
jetzt gut funktioniert die aktuelle Zeit für die Anzeige auf meinem 2013 Samsung Smart TV. Sie können jedoch immer noch Probleme beim Vergleichen von Zeitstempeln mit der aktuellen Uhrzeit haben.
Ich denke nicht, dass es zu breit wäre. Lieber Andrei, vielleicht, wenn du ein paar Codebeispiele einfügen würdest ... und dafür stimmen, deine eigene Frage auch wieder zu öffnen. – peterh