2009-12-23 13 views
19

में मिलीसेकंड में यूटीसीटीएम कैसे प्राप्त किया जा सकता है क्या सी भाषा में time.h का उपयोग करके 1 9 70 से मिलीसेकंड और उसके अंश भाग प्राप्त करने का कोई तरीका है?1 जनवरी, 1 9 70 से सी भाषा

+0

आप प्लेटफार्म स्वतंत्र तरीके से अंश भाग नहीं प्राप्त कर सकते हैं। आप किस मंच पर ध्यान केंद्रित कर रहे हैं? – dalle

+0

मैं एएनएसआई सी के मानक का पालन कर रहा हूं, ताकि मेरा आवेदन मंच स्वतंत्र हो। वर्तमान में मैं खिड़की मंच पर हूं। – Siddiqui

उत्तर

32

यह उबंटू लिनक्स पर काम करता है:

struct timeval tv; 

gettimeofday(&tv, NULL); 

unsigned long long millisecondsSinceEpoch = 
    (unsigned long long)(tv.tv_sec) * 1000 + 
    (unsigned long long)(tv.tv_usec)/1000; 

printf("%llu\n", millisecondsSinceEpoch); 

इस लेखन, printf() ऊपर मुझे 1338850197035. दे रहा है के समय आप TimestampConvert.com वेबसाइट पर एक मानसिक स्वास्थ्य की जांच कर सकते हैं जहां आप कर सकते हैं बराबर मानव-पठनीय समय वापस पाने के लिए मूल्य दर्ज करें (यद्यपि मिलीसेकंद परिशुद्धता के बावजूद)।

1

Unix time or Posix time आपके द्वारा वर्णित युग के बाद सेकंड में समय है।

bzabhi का उत्तर सही है: आप मिलीसेकंड प्राप्त करने के लिए यूनिक्स टाइमस्टैम्प को 1000 तक गुणा करें।

ध्यान रखें कि यूनिक्स टाइमस्टैम्प पर भरोसा करके लौटाए गए सभी मिलीसेकंड मान 1000 के गुणक (12345678000) होंगे। संकल्प अभी भी केवल 1 सेकंड है।

आप अंश भाग

नहीं मिल सकता पावेल से टिप्पणी भी सही है। यूनिक्स टाइमस्टैम्प खाते में लीप सेकंड नहीं लेता है। यह मिलीसेकंड में रूपांतरण पर भरोसा करने के लिए भी कम बुद्धिमान बनाता है।

+0

कोई अन्य लाइब्रेरी जो सटीक मिलीसेकंड प्राप्त कर सकती है जिसमें इसके अंश भाग शामिल हैं ????? – Siddiqui

+0

यूनिक्स टाइमस्टैम्प मौलिक के रूप में है क्योंकि हम जा सकते हैं। यह होना चाहिए कि यूनिक्स के डिजाइनरों ने सोचा कि एक दूसरा संकल्प पर्याप्त था। फिर फिर 1 एमएस रिज़ॉल्यूशन बनाए रखने का ओवरहेड शायद यूनिक्स सिस्टम के बाहर था। – pavium

4

यूनिक्स और लिनक्स के लिए आप gettimeofday का उपयोग कर सकते हैं।

Win32 के लिए आप GetSystemTimeAsFileTime और फिर convert it to time_t + milliseconds का उपयोग कर सकते हैं।

+1

gettimeofday() जो आवश्यक है करता है। यहां एक कोड उदाहरण दिया गया है: http://www.docs.hp.com/en/B9106-90009/gettimeofday.2.html तो अमान क्या समर्थन करने की कोशिश कर रहा है ओएस क्या है? – tpgould

6

यह मानक सी नहीं है, लेकिन gettimeofday() दोनों SysV और बीएसडी व्युत्पन्न सिस्टम में मौजूद है, और पॉज़िक्स में है। यह एक struct timeval में अवधि के बाद समय प्रस्तुत करती है:

struct timeval { 
    time_t  tv_sec;  /* seconds */ 
    suseconds_t tv_usec; /* microseconds */ 
}; 
9

आप मिलीसेकंड संकल्प चाहते हैं, आप Posix में gettimeofday() का उपयोग कर सकते हैं। विंडोज कार्यान्वयन के लिए gettimeofday function for windows देखें।

#include <sys/time.h> 

... 

struct timeval tp; 
gettimeofday(&tp); 
long int ms = tp.tv_sec * 1000 + tp.tv_usec/1000; 
+3

शायद यह 'gettimeofday (और टीवी, एनयूएलएल) ' – puk

+1

होना चाहिए उत्तर में लिंक मर चुका है। डोमेन मौजूद नहीं है। – owacoder

1
// the system time 
    SYSTEMTIME systemTime; 
    GetSystemTime(&systemTime); 

    // the current file time 
    FILETIME fileTime; 
    SystemTimeToFileTime(&systemTime, &fileTime); 

    // filetime in 100 nanosecond resolution 
    ULONGLONG fileTimeNano100; 
    fileTimeNano100 = (((ULONGLONG) fileTime.dwHighDateTime) << 32) + fileTime.dwLowDateTime; 

    //to milliseconds and unix windows epoche offset removed 
    ULONGLONG posixTime = fileTimeNano100/10000 - 11644473600000; 
    return posixTime; 
संबंधित मुद्दे