2014-05-22 10 views
5

Come posso ottenere l'ora corrente per l'app Samsung SmartTV scritta su HTML, CSS e JavaScript?Samsung SmartTV ha l'ora corrente

Il problema è nell'oggetto Javascript Date. Quando chiamo new Date() nell'ambiente web, ricevo il valore di data del sistema con l'ora corrente. Ma quando istanziato la data su SmartTV restituisce risultati errati. Mi aspettavo lo stesso comportamento del web. Nelle impostazioni TV il tempo è impostato per essere determinato automaticamente.

Il tempo corretto viene restituito solo quando si imposta manualmente il fuso orario al primo avvio TV. Suppongo che sia un bug della piattaforma Samsung SmartTV.

+0

Non penso che sarebbe troppo ampio. Caro Andrei, forse se inserissi alcuni esempi di codice ... e vota per riaprire anche il tuo quesiton. – peterh

risposta

4

Ho avuto lo stesso problema. new Date() su Samsung Smart TV non ottiene il tempo in base all'impostazione corrente, ma ottiene il tempo di sistema sottostante. Restituisce sempre anche un timestamp UTC.

Fortunatamente, esiste una funzione API, GetEpochTime(), che consente di (risolverlo) risolverlo.

Ecco il codice che sto usando su piattaforme Samsung:

(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() ora funziona bene per la visualizzazione del tempo corrente sul mio 2013 Samsung Smart TV. Tuttavia, potresti comunque avere problemi nel confrontare i timestamp con l'ora corrente.

3

Nella maggior parte dei casi, il tempo in TV è corretto, è solo in fuso orario diverso.

Ad esempio, ho 2 dispositivi vicino a me in questo momento, la data di visualizzazione di LG TV con GMT + 3 e Samsung con GMT + 1. Entrambi i dispositivi visualizzano l'ora corretta.

Se avete bisogno di visualizzare con fuso orario specifico, è possibile 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); 

Se l'orologio interno TV non è affidabile, si può usare web-services to get current time.

+0

Capisco che posso hardcode + N ore ma ho bisogno del supporto dei fusi orari. – Andrei

+0

Il gatto prova a indovinare il fuso orario per indirizzo IP se si ha il lato server nella propria app. http://stackoverflow.com/questions/743505/how-to-get-time-zone-through-ip-address-in-php –