将DateTime转换为US并不好

时间:2013-03-15 15:14:52

标签: c# wpf xaml datetime cultureinfo

我在WPF中有一个DateTimePicker。 dateTimePicker给我一个欧洲格式

在我的DateTimePicker中,我选择“01/02/2014”(欧洲格式)

我想阅读该值,并将其转换为带有美国文化的shortDateString。

我这样做了:

CultureInfo m_UsCulture = new CultureInfo("en-us");
string str = m_dDate.Date.ToShortDateString().ToString(m_UsCulture);

str变量:“01/02/2014”而不是“2/1/2014”

ShortDateString似乎没问题,但不是“ToString(m_UsCulture);”。

我想在一行中这样做。你有这个错误的想法吗?

非常感谢:)

2 个答案:

答案 0 :(得分:4)

  

dateTimePicker给我一个欧洲格式

只有在使用Text属性时才会出现这种情况。我建议您使用SelectedDate属性,它会为您提供DateTime? - 而DateTime不会拥有格式...这取决于你可以随意格式化它。

然后,要将它们转换为美国短日期格式,您应该使用ToString并同时指定d(对于短日期格式)文化:< / p>

string str = m_dDate.Date.ToString("d", m_UsCulture);

您当前的代码正在使用DateTime.ToShortDateString(),这将使用当前的文化,然后在结果字符串上调用ToString 关心你传递的文化。

答案 1 :(得分:4)

ToShortDateString使用当前文化,因此您无法使用此方法指定您的美国文化(除非您更改当前文化)。我会使用ToString代替美国特定的短日期模式:

CultureInfo usCulture = CultureInfo.GetCultureInfo("en-us");
var stringRep = yourDate.ToString(
    usCulture.DateTimeFormat.ShortDatePattern, 
    usCulture);