【发布时间】:2015-09-08 20:49:53
【问题描述】:
我有计时器。我遇到了一个问题,我在几个时区有用户。所以一个人看到他还剩 1 小时,而另一个人看到他还剩 6 小时。我需要确保他们都看过 1 次。我得到了这个测试代码,但是如果我在 Windows 上更改时间,我的计时器值就会改变。感谢您的任何回答。
using System;
namespace timezone
{
class Program
{
static void Main(string[] args)
{
DateTime endDate = DateTime.Parse("2015-09-10 22:20:41");
TimeSpan difference = endDate - MoscowTime(DateTime.Now);
Console.WriteLine(difference.Hours + ":" + difference.Minutes + ":" + difference.Seconds);
Console.ReadLine();
}
public static DateTime MoscowTime(DateTime time)
{
TimeZone zone = TimeZone.CurrentTimeZone;
DateTime universal = zone.ToUniversalTime(time);
return universal.AddHours(3);
}
}
}
【问题讨论】:
-
使用 UTC 时间设置计时器 + stackoverflow.com/questions/12046398/… 跟踪时间变化。
-
你的问题对我来说不是很清楚。请提供几个不同时区用户、用户切换系统时钟等的文字示例以及预期输出。
-
endDate 参数到底是什么?用户设定的目标时间?
-
endDate - 订阅结束时间
-
"但是如果我在 Windows 上更改时间,我的计时器值会更改" - 如果您的意思是更改时间本身而不是时区,则您不能相信本地 Windows 时间来获得这种差异,请注意这一点。查看@AlexeiLevenkov 评论以了解如何跟踪它。