2014-12-08 5 views
6

मुझे पता है कि std::chrono::system_clock::time_point का डिफ़ॉल्ट मान घड़ी का युग है, लेकिन मुझे सी ++ 11 मानक में कोई जनादेश नहीं मिल रहा है कि system_clock का युग एक जैसा है पॉज़िक्स युग के रूप में (1 970-01-01T00: 00: 00Z)। क्या लिनक्स और विंडोज पर यह मानना ​​सुरक्षित है कि यह मामला है? या std::chrono::system_clock::from_time_t(0) का उपयोग करना बेहतर होगा?सिस्टम_क्लॉक के रूप में पॉज़िक्स युग प्राप्त करें :: time_point

उत्तर

6

मानक std::chrono::system_clock::time_point निर्दिष्ट युग को छोड़ देता है।

std::chrono::system_clock::time_point के तीन कार्यान्वयन मैं के बारे में पता कर रहा हूँ रहे हैं:

  1. libC++
  2. libstdC++
  3. वी.एस.

इन तीनों Unix Time, जो संख्या की गणना के चारों ओर पतली रैपर हैं 00:00:00 कोऑर्डिनेटेड यूनिवर्सल टाइम (यूटीसी), गुरुवार, 1 जनवरी 1 9 70 से लीप सेकेंड की गणना नहीं करने वाले सेकंड्स से गुजर चुके हैं।

उनमें से सभी एक हस्ताक्षरित 64 बिट अभिन्न प्रकार पर आधारित हैं। उनमें से कोई भी स्थिर नहीं है। libC++ में microseconds की टिक अवधि है। libstdC++ में नैनोसेकंड की टिक अवधि होती है, और वीएस में 0.1 माइक्रोसॉन्ड की टिक अवधि होती है।

यदि यह उपयोगी है, here is a paper जो time_t के माध्यम से बिना नागरिक कैलेंडर से आगे और आगे परिवर्तित करने के लिए अनिर्दिष्ट लेकिन आम युग का लाभ उठाने के लिए कुछ सूत्र दिखाता है।

std::chrono::system_clock::from_time_t का उपयोग करने का लाभ यह है कि यह मानक द्वारा काम करने की गारंटी है। नुकसान यह है कि अभ्यास में यह आपको एक सेकंड की परिशुद्धता तक सीमित कर देगा (हालांकि उस परिशुद्धता को निर्दिष्ट नहीं किया गया है)।

std::chrono::system_clock के युग को 1 9 70-01-01 होने के लिए मानने का लाभ, भले ही यह अनिर्दिष्ट है, यह है कि आप सभी ज्ञात कार्यान्वयन पर सही होंगे, और इस विकल्प के लिए उपलब्ध सटीकता उस से अधिक है time_t द्वारा।

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