首页 > 解决方案 > 字符串在 c# ERROR 中未被识别为有效的日期时间

问题描述

即使在使用后DateTime.ParseExact我也收到错误

字符串在 C# 中未被识别为有效的日期时间

下面是我的代码

string strIDODDate = DateTime.ParseExact(ObjIp.ID_ODchangeDate, "dd-MM-yyyy hh:mm:ss", CultureInfo.InvariantCulture).ToString("dd-MM-yyyy");

这是全套代码

string strRFCsDate = DateTime.Now.ToString("dd-MM-yyyy", CultureInfo.InvariantCulture);
        //string strRFCsDate1 = DateTime.ParseExact("25-09-2019 00:00:00.000", "dd-MM-yyyy hh:mm:ss.fff", CultureInfo.InvariantCulture)
        //              .ToString("dd-MM-yyyy"); 

        if (string.IsNullOrEmpty(ObjIp.ID_ODchangeDate))
        {
            Tobj.ID_ODchangeDate = strRFCsDate;
        }
        else
        {
            //Tobj.ID_ODchangeDate = Convert.ToString(ObjIp.ID_ODchangeDate);                

            string strIDODDate = DateTime.ParseExact(ObjIp.ID_ODchangeDate, "dd-MM-yyyy hh:mm:ss", CultureInfo.InvariantCulture).ToString("dd-MM-yyyy");
            Tobj.ID_ODchangeDate = strIDODDate;
        }

更新

经过调试,我发现来的格式异常如下

10/28/2021 5:34:35 AM : 10/7/2019 12:00:00 AM 10/28/2021 5:34:35 AM : Error : Dumping into Table Process : String was not recognized as a valid DateTime. at System.DateTimeParse.ParseExact(String s, String format, DateTimeFormatInfo dtfi, DateTimeStyles style)

标签: c#datetime

解决方案


您的问题不清楚,所以我假设您传入的日期时间字符串类似于25-09-19 00:00:00.000

var inDateTime = "25-09-19 00:00:00.000";
string parsedDateTime = DateTime.ParseExact(inDateTime, "dd-MM-yy hh:mm:ss.fff", CultureInfo.InvariantCulture).ToString("dd-MM-yyyy");
Console.WriteLine(parsedDateTime);

输出

25-09-2019

更新:

请查看:https ://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings

这些是用于解析日期时间的日期和时间格式字符串。

目前尚不清楚您的值是 10 月 7 日还是 7 月 10 日……假设 7 月 10 日:

using System;
using System.Globalization;
                    
public class Program
{
    public static void Main()
    {
        var inDateTime = "10/7/2019 12:00:00 AM";
        string parsedDateTime = DateTime.ParseExact(inDateTime, "dd/M/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture).ToString("dd-MM-yyyy");
        Console.WriteLine(parsedDateTime);
    }
}

输出

10-07-2019

见: https ://dotnetfiddle.net/2YMb82


推荐阅读