输入字符串未被识别为有效的日期时间

时间:2014-04-05 07:20:49

标签: c# asp.net

dataRow["BookDate"] = DateTime.ParseExact(date.ToString(), @"d/M/yyyy", 
                                       CultureInfo.InvariantCulture).ToString(); 

我的代码在本地运行但不在iis在线运行 代码也可以使用在线服务。 也添加在我的web.config

3 个答案:

答案 0 :(得分:1)

您不需要对此格式化字符串使用DateTime.ParseExact方法。您的字符串可以表示为标准日期和时间格式。您只能使用DateTime.Parse方法。

这是LINQPad;

的示例
var date = DateTime.Parse("05/04/2014 0:38",
                    CultureInfo.InvariantCulture);
date.Dump();

如果您的date已经DateTime,则您不需要做任何事情。如果您想对其进行字符串表示,只需使用string格式和IFormatProvider的{​​{3}}方法。

date.ToString("d/M/yyyy", CultureInfo.InvariantCulture);

答案 1 :(得分:1)

假设date是一个DateTime变量,您只需要一个带格式说明符的简单ToString

  dataRow["BookDate"] = date.ToString("d/M/yyyy");

但这提出了另一个问题,你是dataRow["BookDate"]一个字符串字段吗?如果是,那么你真的不应该以字符串格式存储日期。您可以直接使用与可视格式无关的DateTime字段,并且可以在需要在数据库查询中应用WHERE条件时正确使用。

相反,如果dataRow["BookDate"]正确是DateTime字段,那么您不需要任何格式,您可以直接为此字段分配DateTime值。代码的工作就是根据您的偏好显示该值以对其进行格式化。

答案 2 :(得分:0)

如果您的日期格式为05/04/2014 0:38

,请从您的评论中获取

1 您需要使用dd代替d代表两位数日期。
2 您需要使用MM代替M代表两位数月份。
3 您需要使用H来表示小时格式 4 您需要使用mm来表示分钟格式。

试试这个:

dataRow["BookDate"] = DateTime.ParseExact(date.ToString(), @"dd/MM/yyyy H:mm", 
                                   CultureInfo.InvariantCulture).ToString(); 

如果您只想存储日期。

试试这个:

dataRow["BookDate"] = DateTime.ParseExact(date.ToString(), @"dd/MM/yyyy H:mm", 
                          CultureInfo.InvariantCulture).ToString("dd/MM/yyyy");