C#日期时间尝试解析未解析有效的日期时间

本文关键字:时间 日期 有效 | 更新日期: 2023-09-27 17:57:48

在C#中,当我传递这样的日期示例时。年月日。。。

它在解析后显示这些结果

 // Example 1
 DateTime t = new DateTime();
 DateTime.TryParse("02/06/2013 00:00:00 PM", out t)
 // Example 2
 DateTime t = new DateTime();
 DateTime.TryParse("02/06/2013 00:00:10 PM", out t)
 // Example 3
 DateTime t = new DateTime();
 DateTime.TryParse("02/06/2013 00:10:10 PM", out t)

结果是

2/6/2013 12:00:00 PM
2/6/2013 12:00:10 PM
2/6/2013 12:10:10 PM

在sql server中传递日期时显示错误的日期。如何解决这些类型或问题。如果这些类型的日期无效。

C#日期时间尝试解析未解析有效的日期时间

如果您可以以yyyy-MM-dd的形式格式化日期,您将获得更好的结果,否则您可能会遇到与区域设置相关的问题

无论区域性如何,都可以使用DateTime.TryParseExact解析特定格式。我相信您需要dd MM yyyy HH:MM:ss PM。

可以使用DateTime.ParseExact或DateTime.TryParseExact

例如

    string dateString = "Mon 16 Jun 8:30 AM 2008"; //Valid
    string format = "ddd dd MMM h:mm tt yyyy";
DateTime dateTime;
if (DateTime.TryParseExact(dateString, format, CultureInfo.InvariantCulture,
    DateTimeStyles.None, out dateTime))
{
    Console.WriteLine(dateTime); // 6/16/2008 8:30:00 AM 
}

分析UTC的DateTime

DateTime.ParseExact(inputDate,"yyyy-MM-ddTHH:MM:ss.00000Z",null).ToUniversalTime();

使用M/d/yyyy格式分析DateTime

DateTime.ParseExact(inputDate,"M/d/yyyy-h:mm",CultureInfo.InvariantCulture);

您展示的解析看起来不错。它们在很大程度上依赖于当前线程的当前文化。如果您不喜欢,请在TryParse调用中指定CultureInfo.InvariantCulture作为格式提供程序。

您关于SQL服务器的问题不清楚。该服务器有什么SQL软件和区域设置?你是如何与它沟通的?

一旦有了DateTimet,就可以通过多种方式对其进行格式化。例如,您可以使用

t.ToString("O")

以获得具有完全精度的"big-endian"字符串。请参见标准日期和时间格式字符串以及自定义日期和时间格式化字符串。

PS!当您声明t时(当它将用于out参数时),您不必指定它。