2014-05-22 19 views
5

Làm cách nào để có được thời gian hiện tại cho ứng dụng Samsung SmartTV được viết trên HTML, CSS và JavaScript?Samsung SmartTV có thời gian hiện tại

Sự cố trong đối tượng Javascript Date. Khi tôi gọi new Date() trên môi trường web, tôi nhận được giá trị ngày tháng của hệ thống với thời gian hiện tại. Nhưng khi tôi khởi tạo ngày trên SmartTV, nó trả về kết quả không chính xác. Tôi mong đợi hành vi tương tự như trên web. Trong thời gian cài đặt TV được đặt thành tự động được xác định.

Trả về thời gian chính xác chỉ khi tôi đặt múi giờ theo cách thủ công trên lần khởi động TV đầu tiên. Tôi cho rằng đó là lỗi của nền tảng Samsung SmartTV.

+0

Tôi không nghĩ nó quá rộng. Thưa Andrei, có lẽ nếu bạn sẽ chèn một số mẫu mã ... và bỏ phiếu để mở lại quesiton của riêng bạn là tốt. – peterh

Trả lời

4

Tôi đã gặp vấn đề tương tự. new Date() trên TV thông minh Samsung không nhận được thời gian theo cài đặt hiện tại, mà thay vào đó sẽ có thời gian hệ thống cơ bản. Nó luôn trả về dấu thời gian UTC.

May mắn thay, có chức năng API, GetEpochTime(), cho phép bạn (sắp xếp) khắc phục sự cố.

Dưới đây là đoạn code tôi đang sử dụng trên nền tảng 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() hiện đang làm việc tốt để hiển thị thời gian hiện tại năm 2013 Samsung Smart TV của tôi. Tuy nhiên, bạn vẫn có thể gặp sự cố khi so sánh dấu thời gian với thời gian hiện tại.

3

Trong hầu hết các trường hợp, thời gian trên TV là chính xác, nó chỉ ở múi giờ khác.

Ví dụ: tôi có 2 thiết bị gần tôi tại thời điểm này, ngày hiển thị LG TV với GMT + 3 và Samsung với GMT + 1. Cả hai thiết bị đều hiển thị thời gian chính xác.

Nếu bạn cần để hiển thị nó với múi giờ cụ thể, bạn có thể 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); 

Nếu đồng hồ truyền hình nội bộ không đáng tin cậy, bạn có thể sử dụng web-services to get current time.

+0

Tôi hiểu rằng tôi có thể mã hóa + N giờ nhưng tôi cần hỗ trợ múi giờ. – Andrei

+0

Bạn mèo thử múi giờ đoán theo địa chỉ IP nếu bạn có phía máy chủ trong ứng dụng của mình. http://stackoverflow.com/questions/743505/how-to-get-time-zone-through-ip-address-in-php –

Các vấn đề liên quan