日期格式不正确
本文关键字:不正确 格式 日期 | 更新日期: 2023-09-27 18:29:58
我有一个函数,它检查空值,然后在不为空的情况下转换日期下面的函数刚刚发送了"08/09/13"(英文格式),我得到了"字符串未被识别为有效的DateTime。"
有人帮我解释为什么?我需要告诉一些地方使用英语格式吗?
感谢
public static DateTime DateTimeCheck(object objDateTime)
{
if (objDateTime == null || objDateTime == "")
return default(DateTime);
return Convert.ToDateTime(objDateTime);
}
我不明白为什么首先传递object
而不是string
作为参数。
试试这个;
public static DateTime DateTimeCheck(object objDateTime)
{
...
return DateTime.ParseExact(objDateTime.ToString(),"dd/MM/yy",CultureInfo.InvariantCulture);
}
当然,如果您的对象的格式与"dd/MM/yy"
不同,这会引发异常。
看看;
Custom Date and Time Format Strings
您可以使用接受区域性信息的重载方法:
Convert.ToDateTime(o, new CultureInfo("en-Gb"));
要获取或设置当前区域性,您可以使用:
System.Threading.Thread.CurrentThread.CurrentCulture
您可能处于不同的区域性,具有不同的默认日期格式。但是,您可以使用ParseExact以预期的格式进行解析。例如:
CultureInfo provider = CultureInfo.InvariantCulture;
DateTime result = DateTime.ParseExact("25/12/82","dd/MM/yy",provider);
我知道这不是你想要的,但这就是确保某个对象中有日期-时间值的方法,比如:
public static DateTime DateTimeCheck(object objDateTime)
{
DateTime dateTime ;
if (objDateTime != null)
{
if (DateTime.TryParse(objDateTime.ToString(), out dateTime))
{
return Convert.ToDateTime(objDateTime);
}
}
return default(DateTime);
}
试试这个:
DateTime.ParseExact((string)objDateTime,"dd/MM/yyyy",CultureInfo.InvariantCulture);