日期格式不正确

本文关键字:不正确 格式 日期 | 更新日期: 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);