2015-09-03 133 views
-1

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

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

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

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

现在它是例外。

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

+0

请您提供正试图转换为datetime –

+0

日期时间scheduledate = Convert.ToDateTime(hfScheduleDate.Value) –

+0

我已经看到它在你的问题的字符串的一个例子。让我看看'hfScheduleDate.Value'的价值' –

回答

0

这样做有点“危险”。这里是几个选项:

  1. 直接从数据库中读取它,而不将其转换为字符串第一
  2. 使用DateTime.ParseExact。有关更多详细信息和示例,请参见MSDN DateTime.ParseExact Method
  3. 对CultureInfo对象使用Convert.ToDateTime。有关更多详细信息和示例,请参见MSDN How To
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 

方法有很多其他的格式,你可以搜索。

0

Convert.ToDateTime方法使用DateTime.Parse方法与您的CurrentCulture设置默认

这意味着(我假设你的05是你的月份部分),您CurrentCulture没有yyyy/MM/dd HH:mm:ss一个standard date and time format

作为替代方案,可以使用custom date and time formatting供应确切格式与具有/作为DateSeparator:TimeSeparatorInvariantCulture(如果您当前的文化没有这些)

DateTime Date = DateTime.ParseExact(hfScheduleDate.Value, "yyyy/MM/dd HH:mm:ss", 
            CultureInfo.InvariantCulture); 

文化1:由于/ format specifier是自定义日期和时间格式中的日期分隔符,因此默认情况下将使用您的CurrentCultureDateSeparator

相关问题