DateTime.TryParseExact返回false

时间:2014-01-07 06:12:31

标签: c# asp.net datetime

我正在尝试使用DateTime

获取DateTime.TryParseExact格式
DateTime logDate;

DateTime.TryParseExact(
    string.Format("{0}/{1}/{2}", day, month, ddlYear.SelectedValue),
    "dd/MM/yyyy",
    null,
    System.Globalization.DateTimeStyles.None,
    out logDate);

它正在返回false。我错过了什么吗?

e.g。 day = 01,month = 02,year = 2013

2 个答案:

答案 0 :(得分:3)

很难确切地说出问题所在,但您应该尝试将DateTimeFormatInfo.InvariantInfo指定为DateTime.TryParseExact参数:

DateTime.TryParseExact(
    "20/12/2013",
    "dd/MM/yyyy",
    System.Globalization.DateTimeFormatInfo.InvariantInfo,
    System.Globalization.DateTimeStyles.None,
    out logDate);

那是因为/在你的模式字符串中有特殊含义:

  

“/”自定义格式说明符表示日期分隔符,用于区分年,月和日。从当前或指定文化的DateTimeFormatInfo.DateSeparator属性中检索适当的本地化日期分隔符。

     来自自定义日期和时间格式字符串的

The "/" Custom Format Specifier

您运行应用程序的文化有可能与日期分隔符不同/本身。

答案 1 :(得分:1)

我猜日期和月份的类型为int,因此无法识别结果,因此最好使用d/M/yyyy格式。

DateTime.TryParseExact(
    string.Format("{0}/{1}/{2}", day, month, ddlYear.SelectedValue),
    "d/M/yyyy",
    null,
    System.Globalization.DateTimeStyles.None,
    out logDate);

你的字符串应该是"1/2/2013"

  

The format of the string representation must match the specified format exactly.