我有一个检查空值的函数,如果它们不为null,则转换日期 下面的函数只是发送了“08/09/13”(英文格式),我得到“字符串未被识别为有效的日期时间。”
有谁帮我解释为什么?我是否需要告诉某处使用英文格式?由于
public static DateTime DateTimeCheck(object objDateTime)
{
if (objDateTime == null || objDateTime == "")
return default(DateTime);
return Convert.ToDateTime(objDateTime);
}
答案 0 :(得分:1)
您可能在不同的文化中使用不同的默认日期格式。但是,您可以使用ParseExact以预期格式进行解析。例如:
CultureInfo provider = CultureInfo.InvariantCulture;
DateTime result = DateTime.ParseExact("25/12/82","dd/MM/yy",provider);
答案 1 :(得分:1)
我不明白为什么你首先将object
作为参数而不是string
传递。
试试这个;
public static DateTime DateTimeCheck(object objDateTime)
{
...
return DateTime.ParseExact(objDateTime.ToString(),"dd/MM/yy",CultureInfo.InvariantCulture);
}
当然,如果您的对象格式与"dd/MM/yy"
的格式不同,则抛出异常。
看看;
答案 2 :(得分:1)
您可以使用接受文化信息的重载方法:
Convert.ToDateTime(o, new CultureInfo("en-Gb"));
获取或设置您可以使用的当前文化:
System.Threading.Thread.CurrentThread.CurrentCulture
答案 3 :(得分:0)
我知道这不是你想要的,但是这是如何确保某个对象的日期时间值是这样的:
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);
}
答案 4 :(得分:0)
试试这个:
DateTime.ParseExact((string)objDateTime,"dd/MM/yyyy",CultureInfo.InvariantCulture);