मैं एक एचएच :: एमएम :: एसएस फैशन में सी ++ में समय बचाने के लिए एक रास्ता तलाश रहा हूं। मैंने यहां देखा कि वे कई समाधान हैं और थोड़ी सी शोध के बाद मैंने time
और localtime
का चयन किया। हालांकि, ऐसा लगता localtime
समारोह की तरह एक छोटे से मुश्किल है, यह says के बाद से:सी ++: समय और स्थानीय समय के साथ वास्तविक समय कैसे प्राप्त करें?
सभी LOCALTIME करने के लिए कॉल और एक ही स्थिर संरचना का उपयोग gmtime, तो प्रत्येक कॉल पिछले कॉल के परिणामों को अधिलेखित करता है।
समस्या इस का कारण बनता है कि कोड के अगले टुकड़ा में दिखाया गया है:
#include <ctime>
#include <iostream>
using namespace std;
int main() {
time_t t1 = time(0); // get time now
struct tm * now = localtime(& t1);
std::cout << t1 << std::endl;
sleep(2);
time_t t2 = time(0); // get time now
struct tm * now2 = localtime(& t2);
std::cout << t2 << std::endl;
cout << (now->tm_year + 1900) << '-'
<< (now->tm_mon + 1) << '-'
<< now->tm_mday << ", "
<< now->tm_hour << ":" << now->tm_min << ":" << now->tm_sec
<< endl;
cout << (now2->tm_year + 1900) << '-'
<< (now2->tm_mon + 1) << '-'
<< now2->tm_mday << ", "
<< now2->tm_hour << ":" << now2->tm_min << ":" << now2->tm_sec
<< endl;
}
इस के लिए एक विशिष्ट उत्पादन होता है:
1320655946
1320655948
2011-11-7, 9:52:28
2011-11-7, 9:52:28
तो तुम देख सकते हैं, time_t
timestamps सही हैं, लेकिन स्थानीय समय सब कुछ गड़बड़ कर देता है।
मेरा सवाल है: मैं एक टाइमस्टैम्प ओटी प्रकार time_t
को मानव-पठनीय समय में कैसे परिवर्तित करूं?
+1। मुझे * _r के बारे में भी पता नहीं था! धन्यवाद! – Viet