2014-05-22 8 views
5

HTML, CSS 및 JavaScript로 작성된 Samsung SmartTV 앱의 현재 시간은 어떻게 알 수 있습니까?Samsung SmartTV에서 현재 시간 가져 오기

문제는 자바 스크립트 Date 개체입니다. 웹 환경에서 new Date()으로 전화를 걸면 현재 날짜와 함께 시스템 날짜 값이 나타납니다. 하지만 SmartTV에서 날짜를 인스턴스화하면 잘못된 결과가 반환됩니다. 나는 웹에서와 같은 행동을 기대했다. TV 설정에서 시간은 자동으로 결정되도록 설정됩니다.

첫 번째 TV 부팅시 시간대를 수동으로 설정할 때만 정확한 시간이 반환됩니다. 삼성 SmartTV 플랫폼의 버그라고 생각합니다.

+0

너무 넓다고 생각하지 않습니다. Andrei 님, 코드 샘플을 몇 개 삽입하고 자신의 질문을 다시 열어 볼 수도 있습니다. – peterh

답변

4

동일한 문제가있었습니다. 삼성 스마트 TV의 new Date()은 현재 설정에 따라 시간을 얻지 못하며 기본 시스템 시간을 얻습니다. 항상 UTC 타임 스탬프를 반환합니다.

다행히도 API 함수 (GetEpochTime())를 사용하면이를 고칠 수 있습니다.

은 여기에 삼성의 플랫폼에서 사용하고 코드입니다 : 지금 내 2013 삼성 스마트 TV의 현재 시간을 표시 잘 작동

(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()

. 그러나 타임 스탬프를 현재 시간과 비교할 때 여전히 문제가있을 수 있습니다.

3

TV의 대부분의 시간은 정확하며 다른 시간대 일뿐입니다.

예를 들어,이 순간에 나에게 2 개의 기기가 있고, GMT + 3의 LG TV 디스플레이 날짜와 GMT + 1의 삼성이 있습니다. 두 장치 모두 정확한 시간을 표시합니다.

당신은, 당신이 add time zone offset to date 할 수있는 특정 시간대로 표시해야하는 경우 : 내부 TV 시계가 신뢰할 수없는 경우

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 –