2014-05-22 69 views
5

如何獲取用於HTML,CSS和JavaScript的三星SmartTV應用程序的當前時間?Samsung SmartTV獲取當前時間

問題出在Javascript Date對象。當我在Web環境上調用new Date()時,我收到帶有當前時間的系統日期值。但是當我在SmartTV上實例化日期時,它返回不正確的結果。我期望與網絡上的行爲相同。在電視設置中,時間設置爲自動確定。

只有在第一次電視機啓動時手動設置時區時,纔會返回正確的時間。我想這是三星SmartTV平臺的缺陷。

+0

我不認爲它會太寬泛。親愛的安德烈,也許如果你插入一些代碼示例...並投票重新打開你自己的問題。 – peterh

回答

4

我有同樣的問題。三星智能電視上的new Date()沒有按照當前設置獲得時間,而是獲得底層系統時間。它總是返回一個UTC時間戳。

幸運的是,有一個API函數GetEpochTime(),它允許您(排序)修復它。

下面是我使用的是三星的平臺代碼:

(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()現在工作正常,我的2013三星智能電視上顯示當前時間。但是,將時間戳與當前時間進行比較時可能仍然存在問題。

3

在大多數情況下,電視上的時間是正確的,它只是在不同的時區。

例如,此時我有2臺設備在我附近,LG電視顯示日期爲GMT + 3,三星顯示爲GMT + 1。兩個設備顯示正確的時間。

如果您需要與特定的時間段來顯示它,你可以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); 

如果內部時鐘電視是不可靠的,你可以使用web-services to get current time

+0

據我所知,我可以硬編碼+ N小時,但我需要時區的支持。 – Andrei

+0

如果你的應用程序中有服務器端,你可以嘗試通過IP地址猜測時區。 http://stackoverflow.com/questions/743505/how-to-get-time-zone-through-ip-address-in-php –