【问题标题】:Manage date time issues管理日期时间问题
【发布时间】:2013-08-08 11:22:19
【问题描述】:

应用程序在系统日期格式、显示格式或 T-SQL 语句中存在日期问题是很常见的。目前我正在启动新项目并寻找处理日期的标准解决方案。

有时客户可能希望在应用程序级别更改所有日期的显示格式。我想在不影响整个项目代码的情况下以最小的努力处理这些事情。

请建议我使用适用于所有系统日期格式的 .Net 框架 4.0 在 C# 中处理日期的最佳方法

【问题讨论】:

  • 我建议使用一个很好的 ORM(对象关系映射)解决方案来为您解决这个问题。
  • 大多数日期格式问题的出现是因为数据以字符串(而不是更合适的数据类型)保存的时间超过了必要的时间。字符串应该尽早从用户输入中解析出来,并且格式化应该只在直接在输出中显示日期的代码中执行。
  • @Damien_The_Unbeliever +1 ,我还要添加仅处理 UTC。
  • 谢谢@Maurice Stam,@Damien_The_Unbeliever,@Royi Namir。我们经常收到错误,即字符串未被识别为有效日期时间或可能是异常。Convert.tostring() 期望哪种格式?跨度>

标签: c# tsql datetime


【解决方案1】:

有很多方法,但我会提到我经常使用的 2 个。

  1. 使用 SqlCommand 对象并将 Date 参数作为 DateTime 传递给 db 中的日期时间字段。

  2. 使用标准 SQL 日期格式“yyyy-MM-dd HH:mm:ss.ttt”将日期作为字符串传递给 db 中的日期时间字段。

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    在将日期从应用程序传递到 sql 天气时,在 sql 中的日期之间进行比较时,始终首选通用日期格式;日期套装的通用格式并按照日期标准执行。

    您可以使用通用日期格式“2013-08-31 10:04:44.000”或“20130831”。

    您还可以创建扩展方法 (C# 3.0+) 并在整个应用程序中使用该方法。

    【讨论】:

      【解决方案3】:

      您可以将 datetime 对象转换为 ISO 8601 格式并将其传递给 SQL Server。

      您可以将日期时间转换为 ISO 8601,如下所示,还可以查看Standard Datetime format string

      myDateTime.ToString("s")
      

      如需了解更多信息,请查看以下说明如何将其转换为 ISO 8601 格式的帖子:

      Given a DateTime object, how do I get an ISO 8601 date in string format?

      在数据库中从不将日期时间存储为字符串,而是将only datetimenever format datetime at database level

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-28
        • 2014-09-04
        • 2019-11-25
        • 2011-11-21
        相关资源
        最近更新 更多