c# - 获取时区的日期时间偏移

标签 c# azure

我有一个代码,需要查找中欧时区与 UTC 的当前偏移量。

我的代码部署在azure应用服务中。

var offset = DateTimeOffset.Now.Offset.Hours + ":" + 
             DateTimeOffset.Now.Offset.Minutes;

上述代码的问题是,它依赖于服务器时间,即使我的应用服务位于西欧,Azure应用服务的时区始终是 UTC 。

一种解决方案是将 Azure 应用服务时区更改为所需时区,它将起作用,但我也在考虑使用代码获取偏移量。

请记住,我无法使用系统日期时间来获取偏移量,因为它始终是 UTC。

无论系统日期时间如何,我都可以获得当前中欧 DatetimeOffset 吗?

最佳答案

你可以做这样的事情

TimeZoneInfo cet = TimeZoneInfo.FindSystemTimeZoneById("Central European Standard Time");

DateTimeOffset offset = TimeZoneInfo.ConvertTime(DateTime.Now, cet);

如上所述here .

如果您不确定 TimeZoneId,您可以使用 GetSystemTimeZones()找到它。

替代方案,如所述 here ,会做这样的事情

DateTime nowCet = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(DateTime.Now, 
    "Central European Standard Time");

这样做的好处是您可以轻松计算两个时区之间的差异,例如

DateTime newYork = new DateTime(2017, 10, 04, 12, 23, 00);
DateTime berlin = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(newYork, 
    "Eastern Standard Time", "Central European Standard Time");

TimeSpan diff = berlin - newYork;

关于c# - 获取时区的日期时间偏移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46561075/

相关文章:

c# - params 具有默认参数值的参数

c# - 使用 .net 从 html 页面解析(提取)内容

c# - Entity Framework 的审计跟踪

azure - Microsoft Graph API 获取组事件

azure - 将连续的非零行标记到不同的分区中,这次使用 kusto(Azure AppInsights 的查询语言)

azure - 导入停止 Azure V2 VM Runbook

c# - 用于验证包含 '$' 作为结束字符的字符串的正则表达式

c# - 如何获取 MessageBox 按钮标题?

node.js - 尝试将站点部署到 Azure 时出现应用程序错误

mysql - 多对多查询Azure表