C# 如何在不同的时区使用TimeSpan?

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

我有以下代码,在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(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?