gpt4 book ai didi

c# - 日期时间变量 "tics"一小时

转载 作者:太空宇宙 更新时间:2023-11-03 13:40:46 27 4
gpt4 key购买 nike

我的代码(或者更确切地说,其他人的代码)有一个奇怪的问题。我正在调试并试图弄清楚为什么我们的时间显示错误。

无论如何,这是打印时间的代码:

                                              Wrong value gets returned   
v
[...].text="updated: "+TimeZoneInfo.ConvertTimeFromUtc(OurClass.FetchTime("TableName"), siteTimeZone).ToLongTimeString();

这是被调用的方法:

SqlCommand cmd=getConnection();

cmd.CommandText="Procedure_to_fetch_time";
cmd.Parameters.AddWithValue("@table", tableName);

object o=cmd.ExecuteScalar();

closeConnection(cmd);

if(o==null)
{
return DateTime.MinValue;
}
return DateTime.Parse(o.ToString());
^ here it's correct

我已经调试它并检查了每一个可能改变值的操作(所有的转换和东西),当方法返回值时,它是正确的。但是当它到达时,“过去”了 1 小时,现在时间不对......

有人知道是什么原因造成的吗?


编辑:

回复评论:

  • 值在 TimeZoneInfo.ConvertTimeFromUtc 发生之前更改。
  • 为什么反对?不知道,不是我的代码。
  • o.ToString()"1900-01-01 00:00:00"
  • DateTime.Parse 还返回 "1900-01-01 00:00:00"
  • 数据库正在使用 smalldatetime
  • 数据库与客户端处于同一时区。

最佳答案

DateTime 对象有一个 Kind 属性。此属性说明数据是应以 UTC (DateTimeKind.Utc) 还是本地时区 (DateTimeKind.Local) 解释,还是未知 (DateTimeKind.Unspecified).

您应该使用带有 DateTimeStyles 参数的 DateTimeParse 重载,并指定 DateTimeStyles.AssumeUniversalDateTimeStyles.AssumeLocal.

关于c# - 日期时间变量 "tics"一小时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17108006/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com