【问题标题】:What will happen if I set CurrentCultureInfo to en-us如果我将 CurrentCultureInfo 设置为 en-us 会发生什么
【发布时间】:2010-09-30 11:10:05
【问题描述】:

我正在使用连接到美国远程数据库的客户端应用程序。结果中出现了一些日期时间歧义,例如数据库中的日期是否为 1 月 14 日,它返回为 1 月 13 日。

我想知道如果我将客户端的 CurrentCultureInfo 设置为等于我的服务器将解决问题。

如果可以的话..我想要一个相同的小例子。

【问题讨论】:

    标签: c# .net datetime cultureinfo


    【解决方案1】:

    您的文化用于格式化。您似乎遇到的问题是不同时区之一。

    我对此的简单解决方案是始终以 UTC 存储日期和时间。您可以从客户端使用 DateTime.UtcNow,如果需要,您可以稍后将其转换回本地时间。

    【讨论】:

    • 是的,伙计,我知道。但我是这家公司的新人,他们早在 2005 年就已经编写了这段代码,我只是不能去更改插入语句。
    【解决方案2】:

    问题是美国本身有几个不同的时区,所以这不是一个解决方案。我能想到的一种解决方法是将客户端计算机的时区设置为服务器的时区,但这听起来不太对。

    【讨论】:

    • 好吧,我已经想过如果那个解决方案,那是不可接受的
    【解决方案3】:

    如果您无法将存储日期更改为 UTC 时间并在插入和选择数据时来回转换。那么除非你的数据被插入到服务器上,否则你将不得不记录一些东西来告诉你数据来自哪里(我的意思是插入数据的客户端的本地时区)。

    如果您的数据只是在服务器上插入,那么您可能可以使用 SQL 函数 GetUTCDate 并将其与 GetDate 进行比较,然后从存储在数据库中的日期时间中减去结果。然后在客户端使用 DateTime.ToLocalTime() 将返回值转换为本地时间。正如我所说,这仅在数据专门插入服务器或至少由同一时区的客户端插入时才有效。不然算了。

    【讨论】:

    • 问题是我希望日期为“它是”,不需要更改为什么会出现这个问题。获取日期并显示它,听起来很简单,但到目前为止为我创造了地狱
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-06
    • 1970-01-01
    • 2019-09-10
    • 2015-06-07
    • 2018-06-28
    • 2016-07-30
    相关资源
    最近更新 更多