2009-10-14 26 views
5

के लिए एक स्ट्रिंग परिवर्तित मैं इस "2009/10/13 12:00:00 AM"एक दिनांक स्वरूप

कैसे मैं यह सी # का उपयोग कर प्रारूप YYYYMMDD में बदल सकते हैं

उत्तर

12

व्यायाम करें की तरह एक स्ट्रिंग है दो प्रारूपों आप चाहते हैं, तो का उपयोग करें: उदाहरण के लिए

DateTime dt = DateTime.ParseExact(input, inputFormat, 
            CultureInfo.InvariantCulture); 
string output = dt.ToString(outputFormat, CultureInfo.InvariantCulture); 

: अपने स्ट्रिंग है कि एक वैध दिनांक स्वरूप है

using System; 
using System.Globalization; 

class Test 
{ 
    static void Main(string[] args) 
    { 
     string input = "10/13/2009 12:00:00 AM"; 
     string inputFormat = "MM/dd/yyyy HH:mm:ss tt"; 
     string outputFormat = "yyyyMMdd"; 
     DateTime dt = DateTime.ParseExact(input, inputFormat, 
              CultureInfo.InvariantCulture); 
     string output = dt.ToString(outputFormat, CultureInfo.InvariantCulture); 
     Console.WriteLine(output); 
    } 
} 
+0

महान है, धन्यवाद

private static bool TryStringToDate(string value, EmptyValue emptyValue, ref DateTime result) { DateTime tmp; if(String.IsNullOrEmpty(value)) { if(emptyValue == EmptyValue.MinDate) { result = DateTime.MinValue; return true; } result = DateTime.MaxValue; return true; } if(DateTime.TryParse(value, out tmp)) { result = tmp; return true; } string ldate = value.Trim().ToLower(); if(ldate == "SmartDateT" || ldate == "SmartDateToday" || ldate == ".") { result = DateTime.Now; return true; } if(ldate == "SmartDateY" || ldate == "SmartDateYesterday" || ldate == "-") { result = DateTime.Now.AddDays(-1); return true; } if(ldate == "SmartDateTom" || ldate == "SmartDateTomorrow" || ldate == "+") { result = DateTime.Now.AddDays(1); return true; } return false; } 

तो तुम अंत में कुछ इस तरह के साथ हवा चाहिए: TryStringToDate समारोह जहां जादू होता है उस – raklos

2

हैं। नेट समझ सकते हैं, आप सभी की जरूरत है:

DateTime.Parse(yourString).ToString("yyyyMMdd") 

संपादित: कई उचित दिनांक प्रारूपों एक स्पष्ट प्रारूप विनिर्देश के बिना नेट से समझा जा सकता है, लेकिन अगर अपने विशिष्ट एक नहीं है, तो आप एक स्पष्ट प्रारूप का उपयोग करने की आवश्यकता होगी विनिर्देशक।

DateTime.ParseExact(yourString, format, 
     CultureInfo.InvariantCulture)).ToString("yyyyMMdd") 
+1

"सी #" में कोई वैध डेटाटाइम प्रारूप नहीं है - .NET में डिफ़ॉल्ट स्वरूप हैं जो डेटटाइम। पर्स स्वीकार करेंगे, लेकिन वे सिस्टम की संस्कृति पर निर्भर करते हैं। स्पष्ट होना बेहतर है, आईएमओ। –

+0

सही करने के लिए संपादित किया गया, लेकिन जॉन स्पष्ट नहीं है कि सभी प्रारूपों को संभालने में सक्षम होने की सलाह है। नेट "बॉक्स से बाहर" समझता है, इसलिए बोलने के लिए ... परिदृश्य/आवश्यकताओं के आधार पर, मैं प्रत्येक को कहूंगा तकनीक में यह जगह है। –

0
string s = String.Format("{0:yyyyMMdd}", Convert.ToDateTime("10/13/2009 12:00:00 AM")); 
+2

यह मेरे बॉक्स पर विफल रहता है - आप मानते हैं कि कनवर्ट करें। टोडेटटाइम उस प्रारूप को संभाल लेगा, जो यह यूके संस्कृति में नहीं होगा। –

0

उन बहुत अच्छी समाधान कर रहे हैं, लेकिन अगर आप उस में कुछ पारित पैटर्न से मेल नहीं खाता वे अपवाद टॉस होगा। मैं CSLA, http://www.lhotka.net/cslanet/download.aspx से स्मार्टडेट क्लास का उपयोग करना चाहता हूं। यह nulls और अवैध मूल्यों से अच्छी तरह से संबंधित है।

 SmartDate dt = new SmartDate(input); 
     dt.FormatString = outputFormat; 
     string output = dt.Text; 
     Console.WriteLine(output); 
0

आप कुछ इस तरह की कोशिश कर सकते:

string myDate = "10/13/2009 12:00:00 AM"; 
DateTime result = new DateTime(DateTime.Now.Year, 1, 1); 
DateTime.TryParse(myDate, out result); 
string output = result.ToString("yyyyMMdd"); 
संबंधित मुद्दे