दिलचस्प पोस्ट
डबल से int को कनवर्ट करें MVC4 DataType.Date EditorFor क्रोम में तिथि मान प्रदर्शित नहीं करेगा, ठीक इंटरनेट एक्सप्लोरर में मैं अपने WPF- अनुप्रयोग में एक पृष्ठ के लिए मोडल संवाद कैसे करूं? रेपिटर द्वारा ट्रिगर के साथ खींचें और ड्रॉप करें जावा में प्राथमिकताओं, हमेशा प्राथमिकता सहित स्थानीय चर क्यों होना चाहिए? बिल्ड के दौरान डॉकरफ़ाइल में होस्ट वॉल्यूम को डॉकर कंटेनरों में कैसे माउंट करने के लिए एक एकल को एक int में परिवर्तित कैसे करें दिए गए फ़ाइल के लिए उपयोगकर्ता सिस्टम पसंदीदा संपादक कैसे खोलें? Model.find ()। ToArray () दावा नहीं करने के लिए .toArray () विधि अधिकतम अपलोड फ़ाइल आकार बदलें xampp MySQL प्रारंभ नहीं होता है "एन्ट्रापी और सूचना लाभ" क्या है? पिकासो लाइब्रेरी के साथ अपना स्वयं का डिस्क कैश कैसे लागू करें – एंड्रॉइड? सी ++ में पाठ फ़ाइल में एक विशिष्ट पंक्ति में जाने का कोई तरीका है? आपकी सामग्री में एक ListView होना चाहिए जिसका आईडी विशेषता 'android.r.id.list' है

स्ट्रिंग से दिनांक / समय को कैसे पर्स करना है?

इनपुट : दिनांक और वैकल्पिक समय के साथ स्ट्रिंग अलग-अलग प्रतिनिधित्व अच्छा होगा लेकिन आवश्यक। स्ट्रिंग उपयोगकर्ता की आपूर्ति की जाती हैं और ये खराब हो सकते हैं। उदाहरण:

  • "2004-03-21 12:45:33" (मैं इसे डिफ़ॉल्ट लेआउट मानता हूं)
  • "2004/03/21 12:45:33" (वैकल्पिक लेआउट)
  • "23.09.2004 04:12:21" (जर्मन प्रारूप, वैकल्पिक)
  • "2003-02-11" (समय गुम हो सकता है)

आवश्यक आउटपुट : Epoch (1 9/01/01 00:00:00) या कुछ अन्य निश्चित बिंदु से सेकंड।

बोनस : इसके अलावा, स्थानीय सिस्टम समय की यूटीसी-ऑफसेट पढ़ना बहुत अच्छा होगा।

इनपुट को प्रश्न में मशीन पर स्थानीय समय माना जाता है। आउटपुट को यूटीसी होना चाहिए। सिस्टम केवल लिनक्स है (डेबियन लेनी और उबंटू की ज़रूरत है)।

मैंने boost/date_time का उपयोग करने की कोशिश की है, लेकिन मुझे यह स्वीकार करना होगा कि मैं प्रलेखन के आसपास अपने सिर को लपेट नहीं कर सकता। सिस्टम स्थानीय समय से यूटीसी तक आवश्यक रूपांतरण के बिना निम्नलिखित कार्य:

 std::string date = "2000-01-01"; boost::posix_time::ptime ptimedate = boost::posix_time::time_from_string(date); ptimedate += boost::posix_time::hours(Hardcoded_UTC_Offset);// where to get from? struct tm = boost::posix_time::to_tm(ptimedate); int64_t ticks = mktime(&mTmTime); 

मुझे लगता है कि boost::date_time आवश्यक यूटीसी ऑफसेट प्रदान कर सकता है, लेकिन मुझे नहीं पता कि कैसे

Solutions Collecting From Web of "स्ट्रिंग से दिनांक / समय को कैसे पर्स करना है?"

यद्यपि मुझे पता नहीं है कि बढ़ावा देने के लिए एक अंकों के अंक इनपुट को कैसे स्वरूपित किया जाए, मैं इसे दो अंकों के संपादन के बाद कर सकता हूं:

 #include <iostream> #include <boost/date_time.hpp> namespace bt = boost::posix_time; const std::locale formats[] = { std::locale(std::locale::classic(),new bt::time_input_facet("%Y-%m-%d %H:%M:%S")), std::locale(std::locale::classic(),new bt::time_input_facet("%Y/%m/%d %H:%M:%S")), std::locale(std::locale::classic(),new bt::time_input_facet("%d.%m.%Y %H:%M:%S")), std::locale(std::locale::classic(),new bt::time_input_facet("%Y-%m-%d"))}; const size_t formats_n = sizeof(formats)/sizeof(formats[0]); std::time_t pt_to_time_t(const bt::ptime& pt) { bt::ptime timet_start(boost::gregorian::date(1970,1,1)); bt::time_duration diff = pt - timet_start; return diff.ticks()/bt::time_duration::rep_type::ticks_per_second; } void seconds_from_epoch(const std::string& s) { bt::ptime pt; for(size_t i=0; i<formats_n; ++i) { std::istringstream is(s); is.imbue(formats[i]); is >> pt; if(pt != bt::ptime()) break; } std::cout << " ptime is " << pt << '\n'; std::cout << " seconds from epoch are " << pt_to_time_t(pt) << '\n'; } int main() { seconds_from_epoch("2004-03-21 12:45:33"); seconds_from_epoch("2004/03/21 12:45:33"); seconds_from_epoch("23.09.2004 04:12:21"); seconds_from_epoch("2003-02-11"); } 

ध्यान दें कि सेकंड-से-युग आउटपुट मान लेंगे कि तारीख यूटीसी में थी:

 ~ $ ./test | head -2 ptime is 2004-Mar-21 12:45:33 seconds from epoch are 1079873133 ~ $ date -d @1079873133 Sun Mar 21 07:45:33 EST 2004 

आप संभवत: boost::posix_time::c_time::localtime() उपयोग कर सकते हैं boost::posix_time::c_time::localtime() #include <boost/date_time/c_time.hpp> इस इनपुट को इनपुट संभालने के लिए वर्तमान समय क्षेत्र में है, लेकिन यह असंगत है: मुझे, उदाहरण के लिए, परिणाम आज और अगले महीने के बीच अलग होगा, जब डेलाइट की बचत समाप्त होती है

boost::gregorian में आपके द्वारा और अधिक काम करने की आवश्यकता के कुछ सामान हैं:

 using namespace boost::gregorian; { // The following date is in ISO 8601 extended format (CCYY-MM-DD) std::string s("2000-01-01"); date d(from_simple_string(s)); std::cout << to_simple_string(d) << std::endl; } 

यहां यूटीसी ऑफसेट्स को boost::posix_time साथ boost::posix_time यहां कैसे उपयोग किया जा सकता है इसका उदाहरण है

आप date_input_facet और time_input_facet का उपयोग करके कस्टम इनपुट स्ट्रिंग स्वरूपों से दिनांक और समय का उत्पादन प्रदान कर सकते हैं। इस पृष्ठ पर एक I / O ट्यूटोरियल है जो आपको जाने में मदद करनी चाहिए

यदि सी-शैली स्वीकार्य है: strptime () जाने का तरीका है, क्योंकि आप प्रारूप निर्दिष्ट कर सकते हैं और यह खाते में लोकेल ले सकता है:

 tm brokenTime; strptime(str.c_str(), "%Y-%m-%d %T", &brokenTime); time_t sinceEpoch = timegm(brokenTime); 

विभिन्न लेआउट को रिटर्न मूल्य (यदि संभव हो) के साथ जांचना होगा। समय घड़ी (समय के साथ (localtime_r ()), tm_zone सिस्टम घड़ी को चेक करके जोड़ा जा सकता है

सरल, पोर्टेबल समाधान scanf का उपयोग करना है:

 int year, month, day, hour, minute, second = 0; int r = 0; r = scanf ("%d-%d-%d %d:%d:%d", &year, &month, &day, &hour, &minute, &second); if (r == 6) { printf ("%d-%d-%d %d:%d:%d\n", year, month, day, hour, minute, second); } else { r = scanf ("%d/%d/%d %d:%d:%d", &year, &month, &day, &hour, &minute, &second); // and so on ... 

int मूल्यों के साथ एक struct tm आरंभ करें और इसे समय के रूप में कैलेंडर समय प्राप्त करने के लिए mktime पास करें। समयक्षेत्र रूपांतरण के लिए, कृपया gmtime पर जानकारी देखें ।