C# Azure函数和CosmosDb的日期和时间问题

C# Azure函数和CosmosDb的日期和时间问题,c#,azure,datetime,azure-functions,azure-cosmosdb,C#,Azure,Datetime,Azure Functions,Azure Cosmosdb,我曾经在英国办公室的一个应用程序(客户端)上拍摄我们系统的“快照”。快照由快照日期和时间的时间标记标识。在宇宙数据库中,时间戳是这样的 "timeMark": "2018-05-11T15:14:51" 这是英国使用日期时间的时间。现在是英国拍摄快照的实际时间。 我认为将快照客户端放入Azure Function应用程序并每5分钟自动启动一次是个好主意。除了时间标错了一个小时外,这一切都很顺利。我希望CosmosDb上的时间标记能够与英国的实际时间一样可读。我使用此代码更改Azure函数上的时

我曾经在英国办公室的一个应用程序(客户端)上拍摄我们系统的“快照”。快照由快照日期和时间的时间标记标识。在宇宙数据库中,时间戳是这样的

"timeMark": "2018-05-11T15:14:51"
这是英国使用日期时间的时间。现在是英国拍摄快照的实际时间。 我认为将快照客户端放入Azure Function应用程序并每5分钟自动启动一次是个好主意。除了时间标错了一个小时外,这一切都很顺利。我希望CosmosDb上的时间标记能够与英国的实际时间一样可读。我使用此代码更改Azure函数上的时间标记:

public static DateTime UkTime(DateTime t)
{
    TimeZoneInfo ukTimeZone = TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time");
    DateTime utcDate = DateTime.Now;
    DateTime ukTime = TimeZoneInfo.ConvertTimeFromUtc(utcDate, ukTimeZone);
    return ukTime;
}
时间标记现在在CosmosDb上看起来像这样

"timeMark": "2018-09-28T05:00:04+00:00"
这是在英国拍摄的正确时间(夏季)。现在当我读到时间倒数的时候,它比应该的时间提前了一个小时

完全困惑是最好的方法。
基本上,英国目前是格林尼治标准时间+01小时,比格林尼治标准时间早10月9日,它将恢复到格林尼治标准时间+00小时。我希望能够在英国拍摄快照的正确时间阅读CosmosDb上的“原始”文档,并将其读回应用程序。似乎不必要的复杂

我将功能设置为居住在英国南部。我将Azure门户中的网站时区设置为GMT标准时间,而不是使用DateTime。现在我使用DateTimeOffSet

 DateTime uk = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second, 0);
 DateTimeOffset uk1 = new DateTimeOffset(uk);
我现在在宇宙数据库中得到了正确的时间标记

 "timeMark": "2018-09-28T10:36:02+01:00"
当我从CosmosDb中读回时,时间标记是正确的。

Azure(我想所有其他云提供商都是这样做的)总是使用UTC/GMT,与您使用的数据中心的位置无关