2014-05-22 15 views
5

Wie kann ich aktuelle Zeit für Samsung SmartTV App auf HTML, CSS und JavaScript geschrieben bekommen?Samsung SmartTV erhält aktuelle Uhrzeit

Das Problem ist in Javascript Date Objekt. Wenn ich in der Web-Umgebung new Date() aufrufen, erhalte ich System Date-Wert mit der aktuellen Uhrzeit. Aber wenn ich Datum auf SmartTV instanziiere, gibt es falsches Ergebnis zurück. Ich habe das gleiche Verhalten erwartet wie im Internet. In TV-Einstellungen wird die Zeit automatisch festgelegt.

Die korrekte Zeit wird nur zurückgegeben, wenn die Zeitzone beim ersten TV-Start manuell eingestellt wird. Ich nehme an, es ist Bug der Samsung SmartTV-Plattform.

+0

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

Antwort

4

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.

3

In den meisten Fällen ist die Zeit im Fernsehen korrekt, es ist nur in einer anderen Zeitzone.

Zum Beispiel habe ich 2 Geräte in der Nähe von mir in diesem Moment, LG TV-Anzeige Datum mit GMT + 3 und Samsung mit GMT + 1. Beide Geräte zeigen die korrekte Uhrzeit an.

Wenn Sie es mit bestimmten Zeitzone angezeigt werden, können Sie add time zone offset to date:

var date = new Date(); 
var offset = 4 * 3600000;//Moscow(GMT+4) 
var userOffset = date.getTimezoneOffset() * 60000; 
var fixedTime = new Date(date.getTime() + offset + userOffset); 

Wenn interne TV Uhr nicht zuverlässig ist, können Sie web-services to get current time verwenden können.

+0

Ich verstehe, dass ich + N Stunden fest codieren kann, aber ich brauche Unterstützung von Zeitzonen. – Andrei

+0

Sie Katze versuchen Zeitzone durch IP-Adresse zu erraten, wenn Sie Server-Side in Ihrer App haben. http://stackoverflow.com/questions/743505/how-to-get-time-zone-through-ip-address-in-php –

Verwandte Themen