2012-04-27 4 views
0

文字列変数を使用して現在のシステムカルチャに基づいてDateTimeを構築します。現在のシステムカルチャに基づいて文字列値からDateTimeを作成します。

Some example says to do it manually

// date separator in german culture is "." (so "/" changes to ".") 
String.Format("{0:d/M/yyyy HH:mm:ss}", dt); // "9/3/2008 16:05:07" - english (en-US) 
String.Format("{0:d/M/yyyy HH:mm:ss}", dt); // "9.3.2008 16:05:07" - german (de-DE) 

しかし、それを自動的に行う方法はありますか?

このコードは正しいですか?あなたがToStringthe "G" formatを渡すことによって、自動的に現在のカルチャを使用することができます

DateTime dateValue; 

     // Method 1 
     //CultureInfo culture = CultureInfo.CurrentCulture; 
     //DateTimeStyles styles = DateTimeStyles.None; 
     //string strDateTime = string.Format("{0}/{1}/{2} {3}:{4}:{5}", systemTime.month, systemTime.day, systemTime.year, systemTime.hour, systemTime.minute, systemTime.second); 
     //DateTime.TryParse(strDateTime, culture, styles, out dateValue); 

     // Method 2 
     //DateTime d = new DateTime(systemTime.year, systemTime.month, systemTime.day, systemTime.hour, systemTime.minute, systemTime.second); 
     //dateValue = DateTime.Parse(d.ToString("G")); 

     // Method 3 http://msdn.microsoft.com/en-us/library/ch92fbc1.aspx The string s is parsed using formatting information in the current DateTimeFormatInfo object, which is supplied implicitly by the current thread culture. 
     DateTime d = new DateTime(systemTime.year, systemTime.month, systemTime.day, systemTime.hour, systemTime.minute, systemTime.second); 
     DateTime.TryParse(d.ToString(), out dateValue); 

答えて

2

:ちょうど私がここにすべてのメソッドを置くことを必要とする誰かのため

DateTime dateValue; 
CultureInfo culture = CultureInfo.CurrentCulture; 
DateTimeStyles styles = DateTimeStyles.None; 
string strDateTime = string.Format("{0}/{1}/{2} {3}:{4}:{5}", systemTime.month, systemTime.day, systemTime.year, systemTime.hour, systemTime.minute, systemTime.second); 
DateTime.TryParse(strDateTime, culture, styles, out dateValue); 

string result = dt.ToString("G"); // 9/3/2008 4:05:07 PM for en-US 

Here's a demo.

関連する問題