我需要的是使用字符串变量来构建基于当前系统文化的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)
但有没有办法自动完成?
这段代码是否正确?
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);
对于需要它的人,我会把所有方法放在这里:
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);
答案 0 :(得分:2)
您可以将the "G"
format传递给ToString
:
string result = dt.ToString("G"); // 9/3/2008 4:05:07 PM for en-US
答案 1 :(得分:1)
使用DateTime.TryParse(string, out DateTime result)
时,它会自动使用当前的文化。请参阅此处的备注部分:
http://msdn.microsoft.com/en-us/library/ch92fbc1.aspx