c# - 解析日期时间字符串会产生意外结果
问题描述
我正在尝试将格式正确的字符串转换为格式完全相同的日期,以便 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
我尝试了文化信息,但没有运气。不知道为什么会这样?
解决方案
您对 DateTime 值的工作方式有一个基本的误解。它们没有任何人类可读的格式。相反,它们存储为人类不可读的二进制值。您看到的格式是调试器提供的一种方便的东西。
如果您需要在 SQL* 中使用之外的任何其他特定格式,您可以ToString()
使用适当的格式字符串调用。请记住,当您这样做时,您不再使用 DateTime 值,而是再次使用字符串,最佳做法是在返回字符串之前尽可能等待。
*对于 SQL,您应该使用参数化查询,其中查询中有一个占位符,并且您的日期时间值直接分配给参数值,而无需先转换为字符串。
推荐阅读
- amazon-web-services - 如何根据日期获取条目?
- java - 调用 shutdownNow 后 ScheduledExecutorService 停止可运行
- sql-server - SSIS - 如何从 SSIS 中的文件中传递良好的记录,而不是由于记录不良而使包失败
- javascript - 尝试为测试呈现反应组件时出错
- javascript - React 中的 reducer 有问题
- php - Laravel apis 无法在 https 上运行并给出错误 NET::ERR_CERT_COMMON_NAME_INVALID
- apache-spark - 如何在 Spark 中两两匹配行?
- c - 汇编中的 C while 循环
- firebase - Flutter Web:未捕获(承诺)错误:[cloud_firestore/unknown] NoSuchMethodError:null 上的无效成员:'includeMetadataChanges'
- google-apps-script - google App Script:如何在发送电子邮件时设置条件规则?