相关疑难解决方法(0)

在C#中与FindTimeZoneById()一起使用的时区ID列表?

有人可以指出我所期望的id所引用的所有时区的完整列表TimeZoneInfo.FindTimeZoneById()吗?我无法在任何地方找到列表,我查看了.NET文档.

c# timezone list

218
推荐指数
8
解决办法
24万
查看次数

如何获得不同时区的当前UTC偏移量?

问题:我需要在不同时区的特定时间在UTC上的服务器上执行任务.比方说,我想在太平洋时间上午9点执行,而不管日期灯光的变化.

我有什么?我通过这样做检查了时区的枚举

var infos = TimeZoneInfo.GetSystemTimeZones();
foreach (var info in infos)
{
    Console.WriteLine(info.Id);
}
Run Code Online (Sandbox Code Playgroud)

例如,我只能在太平洋时间看到"太平洋标准时间",如果我这样做,

TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time").GetUtcOffset(DateTime.UtcNow)
Run Code Online (Sandbox Code Playgroud)

我得到-07:00:00了输出,但截至目前,偏移量是-08.这意味着它不考虑日光变化.

我正在计划根据我上面的偏移量创建一个DateTime实例,这似乎不像我预期的那样工作.

另外,我不能使用像NodaTime这样的框架

知道如何让它工作吗?

c# datetime

4
推荐指数
1
解决办法
3172
查看次数

将DateTime偏移应用于US Eastern Timezone

我有一个生成vCal和iCal文件的页面,可以将事件导入Outlook和iCal.这些邮件客户端(Outlook和iCal)将接收UTC中的日期,因为他们知道用户的偏移量并将处理正确的时间.我们编写此代码的客户端基于美国东部时区,我也是.我们的主机位于中部时区(距离东部1小时).我想让代码处理这个没有任何硬编码的偏移量.我的代码目前从我们的CMS获得DateTime并转换为UTC for Outlook/iCal.这意味着CMS的DateTime值相对于托管位置:

// Start Date Time
sb.AppendFormat("DTSTART:{0}\n", thisEvent.StartDate.ToUniversalTime().ToString("yyyyMMddTHHmmssZ"));
Run Code Online (Sandbox Code Playgroud)

当我在本地运行时,一切都很好,因为CMS中的DateTime基于我们客户端的东部时区,所以我是,所以进程是东部 - > UTC - >进入Outlook然后进入UTC - >东部一切都很好.当我在Central中部署到服务器时,来自CMS的DateTime距离Eastern一小时.如何在转换为UTC之前自动从东方获取偏移并添加它?我显然需要这个来处理标准时间(EST)和日光时间(EDT).我想以编程方式执行它而不使用硬编码值,因此无论您处于什么时区,它都能正常工作.即如果我将此代码交给某人在印度进行开发,它应该自动处理其本地服务器的偏移量和相应调整.

我需要做这样的事情,我在转换为UTC之前将偏移应用到东部时间:

sb.AppendFormat("DTSTART:{0}\n", thisEvent.StartDate.ApplyEasternOffset().ToUniversalTime().ToString("yyyyMMddTHHmmssZ"));
Run Code Online (Sandbox Code Playgroud)

很抱歉,如果这是之前讨论过的主题,我只是不确定找到这样的问题的最佳条款.提前致谢.

c# timezone datetime datetimeoffset datetime-format

2
推荐指数
2
解决办法
1万
查看次数

标签 统计

c# ×3

datetime ×2

timezone ×2

datetime-format ×1

datetimeoffset ×1

list ×1