将字符串转换为datetime格式无效的System.Datetime

时间:2013-10-17 07:58:11

标签: c#

我一直在尝试这里找到的许多不同的解决方案,但都没有效果。我想将字符串转换为dd / MM / yyyy

的格式
editField["ExpiryTime"] = "5/19/2011 12:00:00 AM";
DateTime dt = DateTime.ParseExact(editField["ExpiryTime"].ToString(), "dd/MM/yyyy HH:mm:ss tt",  CultureInfo.InvariantCulture);

但我总是收到无效的System.DateTime错误。请求帮助!

2 个答案:

答案 0 :(得分:2)

使用CultureInfo.InvariantCulture来避免文化问题,例如无效的日期分隔符和此格式:

M/dd/yyyy hh:mm:ss tt

大写M是几个月,dd是天,yyyy四位数年。小写hh是12小时格式的小时(与AM / PM结合使用),mm是分钟,ss秒和tt AM / PM指示符。

string input = editField["ExpiryTime"].ToString(); // "5/19/2011 12:00:00 AM"
DateTime dt = DateTime.ParseExact(input, "M/dd/yyyy hh:mm:ss tt",  CultureInfo.InvariantCulture);
  

我想将字符串转换为dd / MM / yyyy

的格式

然后以相同的方式使用ToStringCultureInfo.InvariantCulture强制/作为日期分隔符,不会将其替换为您当前的文化的日期分隔符:

string result = dt.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);

答案 1 :(得分:0)

如果你需要它作为字符串,那么你应该尝试这个

var dt = string.Format("{0:dd/MM/yyyy}",DateTime.Now);

注意:还要检查本地系统日期时间格式。如果它与使用的不匹配,您仍可能遇到相同的异常..