C# 如何在不同的时区使用TimeSpan?
我有以下代码,在UTC中输入C# 如何在不同的时区使用TimeSpan?,c#,datetime,C#,Datetime,我有以下代码,在UTC中输入scheduleConfiguration.Time,在本地时间返回ticks scheduleConfiguration.Time equal {9/13/2015 10:00:00 AM} in UTC var localTime = scheduleConfiguration.Time.ToLocalTime(); {9/13/2015 1:00:00 PM} in Local var executionTime = new TimeSpan(localTim
scheduleConfiguration.Time
,在本地时间返回ticks
scheduleConfiguration.Time equal {9/13/2015 10:00:00 AM} in UTC
var localTime = scheduleConfiguration.Time.ToLocalTime(); {9/13/2015 1:00:00 PM} in Local
var executionTime = new TimeSpan(localTime.TimeOfDay.Ticks);
我更改了数据协定scheduleConfiguration.Time
,因此我需要使用TimeSpan-TimeOfDay
而不是DateTime-Time
,但我需要使用相同的executionTime
。所以我下一步做什么
var local time = DateTime.Now.Date.Add(scheduleConfiguration.TimeOfDay);//{9/13/2015 10:00:00 AM} in Local
var executionTime = new TimeSpan(localTime.Ticks);
所以我有3小时的差异(我有UTC+3时区)
如何在第一种情况下获得与DateTime相同的结果?您应该使用
SpecifyKind
方法
var time = DateTime.SpecifyKind(DateTime.Now.Date.Add(span), DateTimeKind.Utc);
Console.WriteLine(time.ToLocalTime());
好问题!我认为您需要在UTC的第二个变体中创建localTime。因此,
{9/13/2015 10:00:00 AM}
必须使用UTC,而不是本地时间。您应该检查以下答案:@Wouter如何在我的情况下使用DateTimeOffset?