में परिवर्तित यूटीसी में स्थानीयसमय युक्त स्ट्रिंग मैं एक स्ट्रिंग एक स्थानीय दिनांक/समय से युक्त है और मैं इसे (यूटीसी में) एक टाइम_टी मूल्य में बदलने की जरूरत है - मैं इस कोशिश कर रहा है:सी
char* date = "2009/09/01/00";
struct tm cal = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL};
strptime(date, "%Y/%m/%d/%H", &cal);
time_t t = mktime(&cal);
लेकिन टाइम_टी वैल्यू जो मैं वापस प्राप्त करता हूं वह वैल्यू है जो मैं अपेक्षा करता हूं कि स्ट्रिंग को यूटीसी के रूप में स्थानीय समय के रूप में पार्स नहीं किया जा रहा था। हो सकता है कि मैंने गलत तरीके से क्या समझा है, लेकिन 1 सितंबर को मेरे टाइमज़ोन (यूके) में हम बीएसटी (यानी यूटीसी + 1 घंटा) का उपयोग कर रहे हैं, इसलिए मैं उम्मीद करता हूं कि मैं यूटीसी से 1 घंटे आगे का मूल्य समाप्त करूंगा ।
क्या स्ट्रिंग को लोकलटाइम के रूप में समझने का कोई तरीका है, स्वचालित रूप से यूटीसी ऑफ़सेट को ध्यान में रखते हुए जो उस तारीख पर प्रभावी होता? ध्यान दें कि मुझे tim_t मान की आवश्यकता नहीं है, एक उदाहरण टीएम में, ऊपर दिए गए उदाहरण में मैं समय_टी मान 200 9 -00-01 01:00:00 जीएमटी
धन्यवाद, लेकिन इसकी टाइम_टी मूल्य है कि मैं में दिलचस्पी रखता हूँ - अगर मैं 'localcal' पर एक mktime() करना आपके कोड में संरचना यह मुझे एक ही परिणाम देता है जैसे mktime() पर ' कैलोरी '। मुझे '200 9 -01-01 01:00 GMT' – codebox
के समतुल्य टाइम_टी मान का उत्पादन करने के लिए कुछ तरीका चाहिए। सी सम्मेलन यूटीसी में 1 9 70-01-01 के बाद से सेकंड की संख्या को स्टोर करने के लिए है। यह केवल व्याख्या या प्रदर्शन के लिए स्थानीय स्तर पर बदल गया है। यदि आप rob_t को localtime संस्करण के रूप में पेश करना चाहते हैं, तो आप gmtime() और localtime() के बीच सेकंड की संख्या की गणना कर सकते हैं और इसे अपने time_t में जोड़ सकते हैं। :) – Andomar
ठीक है, लेकिन मैं स्ट्रिंग को स्थानीय समय के रूप में समझना चाहता हूं, यूटीसी टाइम स्ट्रिंग के लोकलटाइम समकक्ष का उत्पादन नहीं करता हूं। हमारे उदाहरण में, यह मानते हुए कि हम जीएमटी + 1 में रहते हैं, स्ट्रिंग "200 9/09/01/00" हमारे स्थानीय समय है, और इसलिए यह जीएमटी में "200 9/09/01/01" के बराबर है, और इसलिए कोड को "2009/09/01/01" से संबंधित time_t मान वापस करना चाहिए। क्या इसका कोई मतलब है? – codebox