【发布时间】:2017-08-31 16:54:10
【问题描述】:
我有一段代码可以让我获取当前日期/时间(本地)。
它将在 Azure 上运行。
我正在获取通用时间并将其转换为英国当地时间(考虑到 BST - 英国夏令时)。
在从 .NET 4.6.1/Core 项目迁移到 .NET Core 1.1 时,我现在遇到了一个错误。
类型中不存在类型名称“AdjustmentRule” '时区信息'
“TimeZoneInfo”不包含“GetAdjustmentRules”的定义 并且没有扩展方法“GetAdjustmentRules”接受第一个 可以找到“TimeZoneInfo”类型的参数(您是否缺少 使用指令还是程序集引用?)
仅使用 .NET Core 1.1 - 我该如何解决这个问题?
public static DateTime GetLocalDateTimeNow()
{
DateTime localDate = System.DateTime.Now.ToUniversalTime();
// Get the venue time zone info
TimeZoneInfo tz = TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time");
TimeSpan timeDiffUtcClient = tz.BaseUtcOffset;
localDate = System.DateTime.Now.ToUniversalTime().Add(timeDiffUtcClient);
if (tz.SupportsDaylightSavingTime && tz.IsDaylightSavingTime(localDate))
{
TimeZoneInfo.AdjustmentRule[] rules = tz.GetAdjustmentRules();
foreach (var adjustmentRule in rules)
{
if (adjustmentRule.DateStart <= localDate && adjustmentRule.DateEnd >= localDate)
{
localDate = localDate.Add(adjustmentRule.DaylightDelta);
}
}
}
DateTimeOffset utcDate = localDate.ToUniversalTime();
return localDate;
}
我不介意替换实现,只要它考虑到 BST 并在 .net core 1.1(没有 4.6.1)上运行。
【问题讨论】:
标签: c# .net azure asp.net-core asp.net-core-mvc