C# 通过在c中添加服务器日期和UTC时间跨度来获取UTC日期时间#

C# 通过在c中添加服务器日期和UTC时间跨度来获取UTC日期时间#,c#,datetime,logic,C#,Datetime,Logic,我的数据库中有UTC TimeSpan,如下所示 item.UTCStartTime = new DateTime(item.StartTime.Ticks).ToUniversalTime().TimeOfDay; 现在我需要当前UTC日期时间和我的UTCStartTime。我是这样做的,但它似乎提供了错误的时间 DateTime time = DateTimeHelper.ConvertUTCToCurrentTimeZone(new DateTime(item.UTCStartTime.

我的数据库中有UTC TimeSpan,如下所示

item.UTCStartTime = new DateTime(item.StartTime.Ticks).ToUniversalTime().TimeOfDay;
现在我需要当前UTC日期时间和我的UTCStartTime。我是这样做的,但它似乎提供了错误的时间

DateTime time = DateTimeHelper.ConvertUTCToCurrentTimeZone(new DateTime(item.UTCStartTime.Ticks).ToUniversalTime());
然后我把上面的一行改成这样

DateTime time = DateTimeHelper.ConvertUTCToCurrentTimeZone(new DateTime()).Add(item.UTCStartTime);
现在我想我得到了正确的时间,除了周期。它显示的是正确的相反方向。例如:PM代表AM,AM代表PM更新:抱歉,时间仍然显示错误

注意:DateTimeHelper.convertutcotCurrentTimeZone()只是一个 方法将UTC转换为所需时区的新日期时间 时区ID


首先,
new DateTime()
返回一个可以显示为1/1/0001 12:00:00 AM(源代码:)的值。几乎年、月、日、时、分、秒都设置为0。此外,它返回时没有指定时区(本地或UTC),因此将其转换为UTC不会产生任何效果

var date = new DateTime();
Console.WriteLine(date);
Console.WriteLine(date.ToUniversalTime());

// Output
01/01/0001 00:00:00
01/01/0001 00:00:00
正因为如此,你的约会肯定会取消。如果您确定
item.utcstartime
包含正确的UTC时间,请将其添加到今天的日期,可以通过以下操作完成:

var utcTimeToday = DateTime.UtcNow.Date.Add(item.UTCStartTime);

什么是“UTC时间跨度”?对我来说,时间跨度类似于“48小时”,对于这一点,TZ指示器毫无意义。现在,如果你把它定义为“从日期时间到日期时间”,那是另一回事。就我而言,我需要更多的细节,在这里。例如,DateTimeHelper的实现将非常有用。另外:你知道存在吗?也许你也可以看看这个:。免责声明:这是一篇相当古老的文章,我不确定其中有多少仍然适用。。。澄清我的问题。我想将UTC时间跨度转换为印度标准时间的时间跨度…再次:“什么是“UTC时间跨度”?绝对不是?不,没必要我相信。。我刚让它工作起来。。现在。。我是这样做的。。新的日期时间(item.StartTime).ToString(“hh:mmtt”)“同样,它作为UTC时区返回。”你从哪里得到它?这表明,它是“未指定的”。^^但它有一个0小时的偏移量。但这不完全一样。@tsveds我只是尝试了答案。。不成功。。我会做一件事。。。我会更新我的问题。@Fildor good point,会更新我的答案。