【问题标题】:Convert DateTime to US is not good将 DateTime 转换为 US 不好
【发布时间】:2013-03-15 15:14:51
【问题描述】:

我在 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);”却不行。

我想在一行中做到这一点。你知道这个错误吗?

非常感谢:)

【问题讨论】:

  • 一行一行的价值是什么?
  • 拥有字符串后会如何处理?
  • 您正在将字符串转换为字符串 - ToShortDateString().ToString(m_UsCulture) 那么它如何将文化应用于日期?
  • @Lloyd 说的,ToString(m_UsCulture) 是将文化应用于String,而不是DateTime,它与:"01/02/2014".ToString(m_UsCulture) 相同
  • OT:没有像欧洲格式这样的东西。我们组成欧洲的大约 50 个国家的居民有许多不同的日期格式规则。那些疯狂的意大利人使用小数点作为分隔符。

标签: c# wpf xaml datetime cultureinfo


【解决方案1】:

dateTimePicker 给我一个欧洲格式

只有在您使用 Text 属性时才会出现这种情况。我建议您使用SelectedDate 属性,它会为您提供DateTime? - 而DateTime 没有具有 格式...您可以自行设置格式想要。

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

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

您当前的代码正在使用DateTime.ToShortDateString(),它将使用当前的文化,然后在结果字符串上调用ToString,它不会关心文化你通过了。

【讨论】:

  • OP 使用日期:m_dDate.Date,但由于某种原因转换为带有ToShortDateString 的字符串。
  • @Oded:说实话,这里还不清楚m_dDate 是什么。但我现在的回答显示了如何将 DateTime 转换为特定文化中的短日期字符串。
  • 正在评论原始版本。顺便说一句,这不是我的反对意见。
  • @Oded:当然。但从根本上说,OP 声称“dateTimePicker 给了我欧洲格式”表明 要么 使用了不适当的属性, 对 DateTime 的误解。我想在提供适当转换的同时尝试更正它。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-27
    • 2019-06-24
    相关资源
    最近更新 更多