首页 > 解决方案 > 解析日期时间字符串会产生意外结果

问题描述

我正在尝试将格式正确的字符串转换为格式完全相同的日期,以便 linq 查询针对 SQL 日期工作。

我尝试了几种转换方法,但都失败了。下面的示例显示了该问题:

var test = DateTime.ParseExact("2019-04-09 13:15:00", "yyyy-MM-dd HH:mm:ss", null);

生产

{09/04/2019 13:15:00}

我不知道为什么日期会这样,但我想这样出来:

2019-04-09 13:15:00 

我尝试了文化信息,但没有运气。不知道为什么会这样?

标签: c#

解决方案


您对 DateTime 值的工作方式有一个基本的误解。它们没有任何人类可读的格式。相反,它们存储为人类不可读的二进制值。您看到的格式是调试器提供的一种方便的东西。

如果您需要在 SQL* 中使用之外的任何其他特定格式,您可以ToString()使用适当的格式字符串调用。请记住,当您这样做时,您不再使用 DateTime 值,而是再次使用字符串,最佳做法是在返回字符串之前尽可能等待。


*对于 SQL,您应该使用参数化查询,其中查询中有一个占位符,并且您的日期时间值直接分配给参数值,而无需先转换为字符串。


推荐阅读