c# - .NET 在不同时区和不同区域设置的 SQL 中存储 DateTime

标签 c# datetime

<分区>

对于不同时区和不同语言环境,在 SQL 中存储 DateTime 的最佳方式是什么
有一些关于时区的问题/答案,但没有一个是解决语言环境问题。 DateTime.ToUniversalTime 是特定于区域设置的,我需要它独立于区域设置。

例如:

  DateTime.Now.ToUniversalTime.ToString()
        In US locale returns something like: 11/23/2008 8:20:00   
        In France locale returns   23/11/2008 8:20:00 

Notice that day/month are inverted

如果您在美国 SQL DB 上的法国区域设置中保存 DateTime - 您会收到错误消息,因为它是错误的日期格式。

最好是 C# 代码片段

  1. 获取特定语言环境中的日期时间并将其存储在 SQL 日期时间字段中
  2. 检索了一个 SQL 日期时间字段并将其转换为语言环境日期时间

谢谢

最佳答案

我不清楚你想要实现什么,也许你应该 看看DateTimeOffset类(class)。这使您可以控制相对于 UTC 的时间偏移,并且您可以通过这种方式“独立于区域设置”。 您可以将您的时间以 UTC 格式存储在数据库中,然后根据需要进行转换。问题是你想如何转换它。

关于c# - .NET 在不同时区和不同区域设置的 SQL 中存储 DateTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/292887/

相关文章:

c# - DateTime.TryParseExact 未按预期工作

datetime - 将文本框文本设置为今天/明天/第二天/等。自动地?

swift - 在swift中,使用timeIntervalSinceReferenceDate,NSDate与NSTimeInterval错误不同

c# - 通过C#语句备份SQL Server数据库

c# - 将小时/分钟添加到 C# 中的日期时间变量

C# 线程在另一个类中启动

datetime - 如何确定 Google Sheets API 返回值的数据类型

android - 在 mpandroidchart 的 x 轴上实现连续的日期时间标签

c# - 在 C# 中导入 Python 库

c# - 如何从 NodaTime 中的偏移量获取所有 IANA 时区?