日期格式不正确

时间:2013-09-02 14:19:58

标签: c#

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

有谁帮我解释为什么?我是否需要告诉某处使用英文格式?

由于

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

        }

5 个答案:

答案 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);