相关疑难解决方法(0)

夏令时和时区最佳实践

我希望能够将这个问题及其答案作为处理夏令时的权威指南,特别是处理实际的变更问题.

如果您有任何要添加的内容,请执行此操作

许多系统依赖于保持准确的时间,问题在于由于夏令时改变时间 - 向前或向后移动时钟.

例如,在订单获取系统中有一个业务规则取决于订单的时间 - 如果时钟发生变化,规则可能不那么明确.如何保持订单的时间?当然有无数的场景 - 这只是一个说明性的场景.

  • 你是如何处理夏令时问题的?
  • 您的解决方案中有哪些假设?(在这里寻找背景)

同样重要的是,如果不是这样的话:

  • 你尝试了哪些不起作用?
  • 为什么不起作用?

我会对编程,操作系统,数据持久性和该问题的其他相关方面感兴趣.

一般答案很好,但我也希望看到细节,特别是如果它们只在一个平台上可用.

timezone datetime utc datetimeoffset dst

2021
推荐指数
20
解决办法
40万
查看次数

TimeZoneInfo从时区分钟偏移

从JavaScript我已经传递给控制器​​,使用对象getTimezoneOffset上的方法将用户的客户端日期时间从UTC偏移的分钟数Date.现在我在服务器端有这个信息,我想从它创建一个TimeZoneInfo.这怎么可能?如果这不可能,那么如何使用分钟偏移将服务器端的UTC日期转换为客户端的时区?

javascript c# timezone datetime asp.net-mvc-4

9
推荐指数
1
解决办法
5555
查看次数

时区仅仅是偏移量还是“更多信息”?

我住在一个他们每年两次更改时间的国家。也就是说:一年中有一段时间,UTC的偏移量是-3小时(-180分钟),而其他时间段的偏移量是-4小时(-240分钟)

严重地:

       |------- (offset = -3) -------|------- (offset is -4) -------|
start of year                      mid                            end of year
Run Code Online (Sandbox Code Playgroud)

我的问题是:
“时区”只是代表偏移量的数字吗?那就是:我的国家有两个时区?或时区包含此信息?

这很重要,因为我将每个日期保存在数据库的UTC时区(偏移= 0)中。

相反,我是否也应该使用本地时区保存日期并保存其偏移量(保存时)?

这是一个通过使用时区UTC保存日期而看到的问题的示例:
假设我有一个人们可以发送消息的系统。
我想在统计部分中绘制“每小时发送的邮件v / s”(即:“每天按小时发送的邮件”)

可以说整个数据库中只有两条消息:

  1. 消息1,于3月1日,UTC时间5 pm(本地时间2 pm)发送
  2. 消息2,于UTC时间8月1日下午5点(本地时间下午1点)发送

然后,如果我在8月2日创建该图,将那些UTC日期转换为本地将得到以下信息:“ 2条消息在下午1点发送”。

timezone utc timezone-offset

3
推荐指数
1
解决办法
585
查看次数

时区与偏移量以存储用户时区

我意识到这是一个常见问题,但是我找不到任何指出使用/存储用户时区偏移量的缺点的帖子。这不是更好,更有效的方法吗?

时区长的下拉列表不是用户友好的,而且大多数此类列表并没有囊括所有城市。他们还要求用户指定他们的时区。我觉得仅检测它可能会好得多。就我而言,我的应用程序是具有Reach前端的ASP.NET Core应用程序,通过JavaScript捕获用户的时区偏移非常容易。

为什么存储用户时区的偏移量不是一个好主意?

javascript asp.net timezone timezone-offset reactjs

3
推荐指数
1
解决办法
903
查看次数

java:timezone getTimeZone("GMT-0700")'timezone useDaylight不正确

我想获得洛杉矶的时区信息,现在10/10/2017是夏令时,但当我在洛杉矶以两种方式获得时区时,我得到了不同的结果.

public class TimeZoneDemo2 {
  public static void main(String[] args) {
    TimeZone timeZoneLosAngeles = 
    TimeZone.getTimeZone("America/Los_Angeles");
    System.out.println(timeZoneLosAngeles);

    TimeZone timeZoneGmtMinus07 = TimeZone.getTimeZone("GMT-07:00");
    System.out.println(timeZoneGmtMinus07);
  }
}
Run Code Online (Sandbox Code Playgroud)

结果是:

sun.util.calendar.ZoneInfo [ID = "美国/洛杉矶",偏移= -28800000,dstSavings = 3600000,useDaylight =真,过渡= 185,lastRule = java.util.SimpleTimeZone中[ID =美洲/洛杉矶,偏移= - 28800000,dstSavings = 3600000,useDaylight =真,startYear = 0,STARTMODE = 3,startMonth = 2,朝九特派= 8,startDayOfWeek = 1,开始时间= 7200000,startTimeMode = 0,endMode = 3,endMonth = 10,endday指定= 1,一个endDayOfWeek = 1,结束时间= 7200000,endTimeMode = 0]]

sun.util.calendar.ZoneInfo [ID = "GMT-07:00",偏移= -25200000,dstSavings = 0,useDaylight =假,过渡= 0,lastRule =空]

我的问题是:"America/Los_Angeles"获得的有关夏令时时区信息的信息.为什么不在"GMT -0700"获得的时区信息中包含夏令时信息(useDaylight = false)?

java timezone dst timezone-offset

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