将隐藏字段值转换为datetime时出现异常

时间:2015-09-03 09:02:17

标签: c# datetime

我正面临有关类型转换的问题。值来自数据库存储过程。我将这个值存储在这个隐藏的字段中。

<asp:HiddenField id="hfScheduleDate" runat="server"  value='<%#Eval("ScheduleDate") %>' />

并尝试以这种方式转换它。

DateTime Date = Convert.ToDateTime(hfScheduleDate.Value);

现在它正在例外。

  

字符串未被识别为有效的DateTime。

3 个答案:

答案 0 :(得分:0)

像这样做有点“危险”。有几个选择:

  1. 直接从数据库中读取,而不是先将其转换为字符串
  2. 使用DateTime.ParseExact。有关详细信息和示例,请参阅MSDN DateTime.ParseExact Method
  3. 将Convert.ToDateTime与CultureInfo对象一起使用。有关详细信息和示例,请参阅此MSDN How To

答案 1 :(得分:0)

您必须像这样提供CultureInfo转换方法

 string Date = Convert.ToDateTime("01/02/09", 
                         new CultureInfo("en-US")).ToString("yyyy-MMM-dd");
                         //Results 2009-Jan-02
 string Date = Convert.ToDateTime("01/02/09", 
                         new CultureInfo("ru-RU")).ToString("yyyy-MMM-dd");
                         //Results 2009-Feb-01
 string Date = Convert.ToDateTime("01/02/09", 
                         new CultureInfo("ja-JP")).ToString("yyyy-MMM-dd");
                         //Results 2001-Feb-09

您可以搜索许多其他格式。

答案 2 :(得分:0)

Convert.ToDateTime方法默认情况下使用DateTime.Parse设置设置

这意味着(我假设你的05是你的月份),你的CurrentCulture没有CurrentCulture一个standard date and time format 1

作为替代方案,您可以使用custom date and time formatting提供具有yyyy/MM/dd HH:mm:ss作为/DateSeparator作为:的文化的精确格式/ format specifier 1}}(如果你目前的文化没有这些)

TimeSeparator

1:由于{{3}}是自定义日期和时间格式的日期分隔符,因此默认使用InvariantCulture DateTime Date = DateTime.ParseExact(hfScheduleDate.Value, "yyyy/MM/dd HH:mm:ss", CultureInfo.InvariantCulture);