2014-05-22 6 views
5

एचटीएमएल, सीएसएस और जावास्क्रिप्ट पर लिखे गए सैमसंग स्मार्ट टीवी ऐप के लिए वर्तमान समय कैसे प्राप्त कर सकता हूं?सैमसंग स्मार्ट टीवी वर्तमान समय

समस्या जावास्क्रिप्ट Date ऑब्जेक्ट में है। जब मैं वेब वातावरण पर new Date() पर कॉल करता हूं, तो मुझे वर्तमान समय के साथ सिस्टम दिनांक मान प्राप्त होता है। लेकिन जब मैं स्मार्ट टीवी पर तारीख को तुरंत चालू करता हूं तो यह गलत परिणाम देता है। मुझे वेब पर वही व्यवहार की उम्मीद थी। टीवी सेटिंग्स समय में स्वचालित रूप से निर्धारित किया जाता है।

सही समय केवल तभी लौटाता है जब मैं पहले टीवी बूट पर मैन्युअल रूप से समय क्षेत्र सेट करता हूं। मुझे लगता है कि यह सैमसंग स्मार्ट टीवी मंच की बग है।

+0

मुझे नहीं लगता कि यह बहुत व्यापक होगा। प्रिय आंद्रेई, शायद अगर आप कुछ कोड नमूने डालेंगे ... और अपने स्वयं के quesiton को फिर से खोलने के लिए वोट दें। – peterh

उत्तर

4

मुझे एक ही समस्या थी। सैमसंग स्मार्ट टीवी पर new Date() को वर्तमान सेटिंग के अनुसार समय नहीं मिलता है, लेकिन इसके बजाय अंतर्निहित सिस्टम समय मिलता है। यह हमेशा एक यूटीसी टाइमस्टैम्प भी देता है।

सौभाग्य से, एक एपीआई फ़ंक्शन, 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 डिवाइस हैं, जीएमटी +3 के साथ एलजी टीवी डिस्प्ले डेट और जीएमटी + 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

मैं समझता हूं कि मैं हार्डकोड + एन घंटे कर सकता हूं लेकिन मुझे समय क्षेत्र का समर्थन चाहिए। – Andrei

+0

यदि आप अपने ऐप में सर्वर-साइड हैं तो आप बिल्ली आईपी पते द्वारा टाइमज़ोन अनुमान लगाने का प्रयास करें। http://stackoverflow.com/questions/743505/how-to-get-time-zone-through-ip-address-in-php –

संबंधित मुद्दे