【问题标题】:Samsung SmartTV get current time三星智能电视获取当前时间
【发布时间】:2014-07-11 02:21:51
【问题描述】:

我如何获取使用 HTML、CSS 和 JavaScript 编写的三星 SmartTV 应用程序的当前时间?

问题出在 Javascript Date 对象中。当我在 Web 环境中调用 new Date() 时,我会收到带有当前时间的系统日期值。但是当我在 SmartTV 上实例化日期时,它会返回不正确的结果。我期望与网络上的行为相同。在电视设置中,时间设置为自动确定。

只有在我第一次启动电视时手动设置时区时才会返回正确时间。我想这是三星 SmartTV 平台的错误。

【问题讨论】:

  • 我认为不会太宽泛。亲爱的安德烈,也许你会插入一些代码示例......并投票重新打开你自己的问题。

标签: samsung-smart-tv smart-tv smart-tv-alliance


【解决方案1】:

我遇到了同样的问题。三星智能电视上的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 三星智能电视上显示当前时间。但是,在将时间戳与当前时间进行比较时,您可能仍然会遇到问题。

【讨论】:

    【解决方案2】:

    在大多数情况下,电视上的时间是正确的,只是在不同的时区。

    例如,此时我附近有 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

    【讨论】:

    • 我知道我可以硬编码 +N 小时,但我需要时区支持。
    • 如果您的应用中有服务器端,您可以尝试通过 IP 地址猜测时区。 stackoverflow.com/questions/743505/…
    猜你喜欢
    • 1970-01-01
    • 2012-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多