【问题标题】:Datetime.TryParse can't parse yyyy/MM/dd formatDatetime.TryParse 无法解析 yyyy/MM/dd 格式
【发布时间】:2016-06-02 17:25:57
【问题描述】:

我目前正在尝试转换格式为yyyy/MM/dd 的日期。 检查是否给出了有效的日期。

if(!DateTime.TryParse(textBoxDatumVanStorting.Text, out Test2))

这是我目前使用的,但它总是给我一个错误的日期。

我已经考虑使用DateTime.TryParseExact。 但似乎无法让它发挥作用。

【问题讨论】:

  • 究竟什么是错误日期?你的textBoxDatumVanStorting.Text 和你的CurrentCulture 是什么?
  • 我使用的格式是 yyyy/MM/dd。 textBoxDatumVanStorting.Text 包含 1994/09/27 作为日期。但是 Tryparse 无法使用 . 解析格式。

标签: c# datetime tryparse


【解决方案1】:

指定格式

考虑使用DateTime.TryParseExact() 方法,该方法允许您明确定义字符串的格式:

// This will attempt to parse your date in exactly the format provided
if(!DateTime.TryParseExact(textBoxDatumVanStorting.Text,"yyyy/MM/dd", null, DateTimeStyles.None, out Date2))
{
    // Your date is not valid, consider doing something
}

文化问题

在上面的示例中,传入的第三个参数表示您希望用于解析日期的特定文化/格式。使用null 将默认使用当前文化,但如果您需要明确指定这一点,您可以在此处使用不变文化:

Date output;
if(!DateTime.TryParseExact(input,"yyyy/MM/dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out output))  
{
     // Uh oh again...
}

【讨论】:

  • 感谢这工作。只需将 DateTimeStyles.None 更改为 System.Globalization.DateTimeStyles.None
  • @Blasje - 您可以在文件顶部添加using System.Globalization,这样您就不需要输入太多代码了。
【解决方案2】:

如果DateTime.TryParse 无法解析您的字符串,这意味着yyyy/MM/dd 格式不是CurrentCulture 的标准日期格式。

您可以将DateTime.TryParseExact 与自定义格式一起使用,例如;

DateTime Test2;
if (DateTime.TryParseExact(textBoxDatumVanStorting.Text, "yyyy/MM/dd", 
                           CultureInfo.InvariantCulture, 
                           DateTimeStyles.None, out Test2))
{
    // Successfull parse
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-06
    • 1970-01-01
    • 2019-11-09
    • 2022-11-16
    • 2016-04-04
    • 2016-01-02
    • 1970-01-01
    相关资源
    最近更新 更多