मेरे पास एक्सेल में एक DateTime string के रूप में विभिन्न प्रारूपों के साथ है। मैं c# का उपयोग करके string प्रारूप को DateTime में रूपांतरित करना चाहता हूं। लेकिन मुझे निम्नलिखित अपवाद मिल रहा है:

स्ट्रिंग को मान्य दिनांक समय के रूप में पहचाना नहीं गया था।

DateTimeOffset.Parse("09/20/2019 17:25:59");

अपेक्षित:

09/20/2019 17:25:59

वास्तविक:

System.FormatException

0
Geek 24 सितंबर 2019, 16:09
1
आप "कोई भी" प्रारूप कर सकते हैं, आपको इसे सटीक रूप से निर्दिष्ट करने की आवश्यकता है, हालांकि आप निर्दिष्ट कर सकते हैं एकाधिक प्रारूप
 – 
DavidG
24 सितंबर 2019, 16:14
क्या आप प्रत्येक मान का प्रारूप पहले से जानते हैं?
 – 
Diado
24 सितंबर 2019, 16:15
उपयुक्त प्रारूप के साथ ParseExact का प्रयोग करें। या उस CultureInfo ऑब्जेक्ट को पास करें जो दूसरे पैरामीटर के रूप में इस ofrmat से मेल खाता है, उदाहरण के लिए Parse("..",CultureInfo.GetCultureInfo("en-US"))
 – 
Panagiotis Kanavos
24 सितंबर 2019, 16:15
1
Excel और datatable टैग का इस प्रश्न से क्या लेना-देना है? एक्सेल दिनांकों को मूल रूप से संग्रहीत करता है, जिसका अर्थ है कि उन्हें सीधे DateTime के रूप में पढ़ा जा सकता है। वास्तविक प्रश्न क्या है?
 – 
Panagiotis Kanavos
24 सितंबर 2019, 16:16
1
मैंने आपका कोड कॉपी पेस्ट किया और कोई समस्या नहीं मिली। ऐसा प्रतीत होता है कि आपका पीसी दिनांक प्रारूप भिन्न हो सकता है जिसे आप पार्स करने का प्रयास कर रहे हैं। इस मामले में आपको ParseExact का उपयोग करना चाहिए
 – 
Sunil
24 सितंबर 2019, 16:17

2 जवाब

आप DateTime.ParseExact का इस्तेमाल कर सकते हैं यहां दस्तावेज़ करें

var dateThatDesired = DateTime.ParseExact("09/20/2019 17:25:59","MM/dd/yyyy HH:mm:ss",CultureInfo.InvariantCulture);

यदि आपके पास एक्सेल तालिका में सीमित संख्या में प्रारूप हैं तो आप उन्हें DateTime.TryParseExact() के साथ परीक्षण कर सकते हैं और यदि सफलता के साथ वापस आते हैं तो आप पार्स किए गए दिनांक समय का उपयोग कर सकते हैं जो आपको out पैरामीटर के साथ मिलेगा।

1
darcane 24 सितंबर 2019, 16:23

सबसे पहले, कोई सार्वभौमिक प्रारूप नहीं है, क्योंकि दिनांक प्रतिनिधित्व अस्पष्ट हैं, एक शास्त्रीय उदाहरण है

 01/02/03 == 2 Jan 2003 (USA)  
 01/02/03 == 1 Feb 2003 (Russia) 
 01/02/03 == 3 Feb 2001 (China) 

यदि आपके पास अपेक्षित प्रारूपों का संग्रह है, तो आप ParseExact, उदा.

 string[] possibleFormats = new[] {
   "MM'/'dd'/'yyyy HH:mm:ss",   // USA
   "dd'.'MM'.'yyyy HH:mm:ss",   // Russia
   "yyyy'-'MM'-'dd HH:mm:ss",   // China
   "yyyy'-'MM'-'dd'T'HH:mm:ss", // ISO 8601
 };

 string value = @"09/20/2019 17:25:59";

 DateTimeOffset result = DateTimeOffset.ParseExact(
   value, 
   possibleFormats, 
   CultureInfo.InvariantCulture, 
   DateTimeStyles.AssumeLocal);
1
Dmitry Bychenko 24 सितंबर 2019, 16:46