0

我有一个检查空值的函数,如果它们不为空,则转换日期,下面的函数刚刚将“08/09/13”发送给它(英文格式),我得到“字符串未被识别为有效的日期时间”。

有人帮我解释为什么吗?我需要告诉某处使用英文格式的东西吗?

谢谢

public static DateTime DateTimeCheck(object objDateTime)
        {
            if (objDateTime == null || objDateTime == "")
                return default(DateTime);
            return Convert.ToDateTime(objDateTime);

        }
4

5 回答 5

1

您可能处于具有不同默认日期格式的不同文化中。但是,您可以使用ParseExact以预期的格式进行解析。例如:

 CultureInfo provider = CultureInfo.InvariantCulture;
 DateTime result = DateTime.ParseExact("25/12/82","dd/MM/yy",provider);
于 2013-09-02T14:22:33.697 回答
1

我不明白您为什么将 anobject作为参数而不是string首先传递。

试试这个;

public static DateTime DateTimeCheck(object objDateTime)
{
   ...
   return DateTime.ParseExact(objDateTime.ToString(),"dd/MM/yy",CultureInfo.InvariantCulture);    
}

当然,如果您的对象的格式与 with 不同,这将引发异常"dd/MM/yy"

看一眼;

于 2013-09-02T14:26:25.213 回答
1

您可以使用接受文化信息的重载方法:

Convert.ToDateTime(o, new CultureInfo("en-Gb"));

要获取或设置当前文化,您可以使用:

System.Threading.Thread.CurrentThread.CurrentCulture
于 2013-09-02T14:26:47.013 回答
0

尝试这个:

DateTime.ParseExact((string)objDateTime,"dd/MM/yyyy",CultureInfo.InvariantCulture);
于 2013-09-02T14:27:44.817 回答
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);
    }
于 2013-09-02T14:26:52.950 回答