2012-09-19 20 views
22

पर एचएचएमएम प्रारूप में पार्स स्ट्रिंग मैं .NET फ्रेमवर्क वी 3.5 का उपयोग कर रहा हूं और मुझे TimeSpan ऑब्जेक्ट में एक टाइमपैन का प्रतिनिधित्व करने वाली स्ट्रिंग को पार्स करने की आवश्यकता है।टाइमशैन

समस्या यह है कि डॉट विभाजक पेट के बजाय प्रयोग किया जाता है ... उदाहरण के 13.00 के लिए, या 22.30

तो मैं अगर मैं : साथ . को बदलने के लिए या वहाँ एक और अधिक साफ रास्ता है सोच रहा हूँ है इसे प्राप्त करने के लिए।

+0

क्या आप उदाहरण स्ट्रिंग पोस्ट कर सकते हैं? – Oded

+0

प्रतिस्थापन बेहतर होगा जब तक आपको fractional सेकंड नहीं मिला – V4Vendetta

उत्तर

35

DateTime बाहर पार्स और उसके TimeOfDay संपत्ति जो एक TimeSpan संरचना है का उपयोग :

string s = "17.34"; 
var ts = DateTime.ParseExact(s, "HH.mm", CultureInfo.InvariantCulture).TimeOfDay; 
+1

यह समस्या का सबसे प्रासंगिक उत्तर है! – V4Vendetta

+1

+1 धन्यवाद! वास्तव में दिलचस्प! – davioooh

+0

@ डेवियोओह आपका स्वागत है, मुझे खुशी है सहायता :) –

3
string YourString = "01.35"; 

var hours = Int32.Parse(YourString.Split('.')[0]); 
var minutes = Int32.Parse(YourString.Split('.')[1]); 

var ts = new TimeSpan(hours, minutes, 0); 
+1

मुझे यह जवाब सबसे अच्छा लगता है! –

7

अपडेट किया गया जवाब:

दुर्भाग्य से नेट 3 कस्टम TimeSpan प्रारूपों प्रयोग की जाने वाली है, तो आप मैन्युअल रूप से कुछ कर रही के साथ छोड़ दिया जाता है की अनुमति नहीं है। जैसा कि आप सुझाव देते हैं मैं बस प्रतिस्थापन करता हूं।

मूल जवाब (केवल 4 नेट पर लागू होता है):

को निर्दिष्ट उपयोग TimeSpan.ParseExact, एक custom format string:

var timeSpan = TimeSpan.ParseExact("11.35", "mm'.'ss", null); 
+2

वह .NET 3.5 –

+1

का उपयोग कर रहा है '3.5' में कोई पारसीएक्सएक्ट नहीं :(! – V4Vendetta

+0

@PaoloMoretti: ओह ... विकल्पों में देख रहे हैं। – Jon

2

के लिए नेट 3.5 आप DateTime.ParseExact का उपयोग करें और TimeOfDay संपत्ति का उपयोग कर सकते

string timestring = "12.30"; 
TimeSpan ts = DateTime.ParseExact(
            timestring, 
            "HH.mm", 
            CultureInfo.InvariantCulture 
           ).TimeOfDay; 
+0

यह समाधान चट्टानों! मैंने इसे अपने आप पाया लेकिन यह इतना आसान है, अब आप सभी सामान्य डेटटाइम प्रारूपण विकल्प प्राप्त करते हैं जिन्हें हम जानते हैं और प्यार करते हैं और टाइमस्पेन के लिए उन्हें पहली बार उम्मीद करते हैं। - ध्यान दें कि 24 घंटे से अधिक टाइम्सपैंस के लिए यह स्पष्ट रूप से काम नहीं करेगा ... लेकिन अधिकांश समय मैं टाइमस्पेन का उपयोग कर रहा हूं जब बाहरी सिस्टम के साथ एकीकृत होता है जो तिथियों और समय को अलग से ट्रैक करता है, इसलिए हम पिछले 23:59:59 पर कभी नहीं जाते :) –

0

यह कोशिश (यह मेरे लिए काम किया):

DateTime dt = Convert.ToDateTime(txtStartDate.Text).Add(DateTime.ParseExact(ddlStartTime.SelectedValue, "HH.mm", CultureInfo.InvariantCulture).TimeOfDay); 

StartDate की तरह 28/02/एक स्ट्रिंग होगा 2018 और ddlstarttime एचएच प्रारूप में है जैसे 13.00