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.
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