C#datetime tryparse不解析有效日期时间

时间:2013-02-06 09:15:06

标签: c#

在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中传递日期时显示错误的日期。如何解决这些类型或问题。如果这些类型的日期无效。

4 个答案:

答案 0 :(得分:2)

如果您可以yyyy-MM-dd格式设置日期格式,那么效果会更好 - 否则您可能会遇到与语言区域相关的问题

答案 1 :(得分:2)

无论文化如何,您都可以使用DateTime.TryParseExact来解析特定格式。我相信你需要dd-MM-yyyy HH:mm:ss PM。

答案 2 :(得分:2)

可以使用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.ParseExact(inputDate,“yyyy-MM-ddTHH:mm:ss.0000000Z”,null)。ToUniversalTime();

使用格式M / d / yyyy

解析日期时间

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

答案 3 :(得分:0)

你展示的解析似乎没问题。它们在很大程度上依赖于当前线程的当前文化。如果您不喜欢,请在CultureInfo.InvariantCulture来电中指定TryParse作为格式提供商。

您对SQL服务器的疑问尚不清楚。什么SQL软件,以及该服务器具有哪些区域设置?你是如何与它沟通的?

获得DateTimet后,您可以通过多种方式对其进行格式化。例如,您可以使用

t.ToString("O")

获得具有完全精度的“big-endian”字符串。请参阅Standard Date and Time Format StringsCustom Date and Time Format Strings

PS!在声明它时(当它将用于t参数时),您不必分配out