1

在 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

4 回答 4

2

如果您可以将日期格式化为以下形式,您将获得更好的结果yyyy-MM-dd- 否则您可能会遇到与语言环境相关的问题

于 2013-02-06T09:17:58.827 回答
2

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

于 2013-02-06T09:20:10.517 回答
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

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

以 M/d/yyyy 格式解析 DateTime

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

于 2013-02-06T09:56:53.447 回答
0

您展示的解析似乎还不错。它们确实严重依赖于当前线程的当前文化。如果您不喜欢,请在调用中指定CultureInfo.InvariantCulture为格式提供程序。TryParse

您关于 SQL 服务器的问题尚不清楚。该服务器有哪些 SQL 软件以及哪些区域设置?你如何与它沟通?

一旦你有了你的DateTimevalue t,你可以用多种方式格式化它。例如,您可以使用

t.ToString("O")

得到一个完全精确的“big-endian”字符串。请参阅标准日期和时间格式字符串自定义日期和时间格式字符串

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

于 2013-02-06T09:58:16.057 回答