mysql - TimeZoneInfo.ConvertTimeToUtc() 的日期时间错误

标签 mysql sql-server date datetime

在我当前的任务中,我面临着日期时间计算中的一些不匹配问题。这就像用户详细信息管理。用户将有激活日期(dd/mm/yyyy)和到期日期(dd/mm/yyyy)。从 UI 中,将收集日期详细信息并将其保存在 SQL DB 中。例如,如果今天(2016 年 5 月 19 日)创建了用户 XYZ,则用户 XYZ 的激活日期将为 2016 年 5 月 19 日,到期日期将设置为 2016 年 5 月 25 日(基于用户意愿)。

User Name: XYZ

Activation Date: 19-05-2016

Expiry Date: 25-05-2016

因此,当尝试在站点中显示详细信息时,将从 SQL DB 检索用户详细信息,并将日期时间转换为 UTC 时区,然后将详细信息传递到站点以供用户查看。在 DB 中,日期按原样,但在使用 TimeZoneInfo.ConvertTimeToUtc() 转换它时,日期值会减少 1(如果日期是 19-05-2016,则将其转换为 28-05-2016)

select username, activationdate, expirydate from UserDetails where username = 'XYZ'

查询结果为,

username | activationdate          |  expirydate
------------------------------------------------------------
XYZ      | 2016-05-19 00:00:00.000 | 2016-05-25 00:00:00.000

转换为 UTC 后,

ExpiryDate = TimeZoneInfo.ConvertTimeToUtc((DateTime)user.expirydate);
ActivationDate = TimeZoneInfo.ConvertTimeToUtc((DateTime)user.activationdate);
// after execution of these statements
// ExpiryDate = 2016-05-18 00:00:00.000
// ActivationDate = 2016-05-24 00:00:00.000

因此,在 ConvertTimeToUtc() 之后,实际激活日期 2016-05-19 00:00:00.000 转换为 2016-05-18 00:00:00.000 ,到期日期 2016-05-25 00:00:00.000 转换为2016-05-24 00:00:00.000。我引用了一个链接,说 TimeZoneInfo.ConvertTimeToUtc() 将 Convert the specified date and time to Coordinated Universal Time (UTC) 。我还尝试过将当前日期和时间在线转换为 UTC google ,它将时间转换为 UTC,但我没有看到日期有这么大的差异。我的困惑是为什么这个 UTC 转换会将日期值减少一个完整的日期?或者哪里出了问题?

对此的任何建议都会有所帮助。

最佳答案

这里的问题是您将日期存储为 2016-05-19 00:00:00.000。尝试获取准确的时间,包括分钟秒,这是用户的时间戳。我相信您来自 IST,当时是晚上 12 点“0 点”表示他们在我们后面,这就是您看到之前日期的原因。如果您有任何疑问,请告诉我。

关于mysql - TimeZoneInfo.ConvertTimeToUtc() 的日期时间错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37320602/

相关文章:

mysql - 我们可以在mysql in子句中使用列名吗?

MySQL自定义日期时间

mysql - Ruby Shoes 和 MySQL : GUI freezes, 我应该使用线程吗?

php - 如何通过触发器使用服务器发送的事件?

MySQL命令行不会打开?

sql-server - 运行更新查询时出现 "Subquery returned more than 1 value"错误

sql-server - 如何将数据和数据库表从一个数据库复制到另一个数据库

sql-server - T-SQL 如何转义星号 (*) 字符

mysql - 我怎样才能找到MySQL中两个日期之间的差异?

android - 使用简单日期格式解析日期时出现空指针异常