सी

2012-09-05 28 views
6

में सीटाइम के साथ यूनिक्स टाइमस्टैम्प स्वरूपण करना मैं ctime का उपयोग कर 10 अंकों वाले यूनिक्स टाइम स्टैंप (वर्तमान में एक स्ट्रिंग) को प्रारूपित करने का प्रयास कर रहा हूं।सी

हालांकि, ctime() टाइपिंग समय के पैरामीटर की अपेक्षा करता है, स्ट्रिंग नहीं।

मैं सीटाई का उपयोग करने से पहले मुझे क्या करना चाहिए? दूसरे शब्दों में, क्या मैं आसानी से स्ट्रिंग को एक time_t में परिवर्तित कर सकता हूं?

+0

'strtoull' (ओवरफ्लो के लिए जांचें) का उपयोग करें। –

+0

@ eq-: समय एक हस्ताक्षरित मात्रा है, हस्ताक्षरित नहीं है। ऋणात्मक समय 1 9 70-01-01 00: 00: 00Z से पहले हैं (और हां, जो त्रुटियों के बीच अस्पष्टता छोड़ देता है और एपोक से एक सेकंड पहले)। –

+0

@ जोनाथन लेफ्लर, मैं इसके बारे में बहुत जागरूक था। हालांकि, "10 अंकों" टाइमस्टैम्प की बात करते हुए (या कम से कम करने के लिए व्याख्या की जा सकती है) सीमा को गैर-ऋणात्मक टाइमस्टैम्प तक सीमित करें। –

उत्तर

9

आप कह रहे हैं कि आपके पास स्ट्रिंग के रूप में 1346426869 की तरह कुछ है और यह एक समय_टी होना चाहता है?

time_t raw_time = atoi("1346426869"); 
printf("current time is %s",ctime(&raw_time)); 

> current time is Fri Aug 31 11:27:49 2012 
0

टाइम_टी प्रकार सिर्फ एक पूर्णांक है। यह युग के बाद से सेकंड की संख्या है। आपको पहले स्ट्रिंग को पार्स करना होगा।

यहां से शुरू करें

:

http://www.gnu.org/software/libc/manual/html_node/General-Time-String-Parsing.html#General-Time-String-Parsing

और वहाँ से आगे अपने तरीके से काम।