冬季开始时呈现模棱两可的额外小时的最佳方法



当冬季开始时,出现模棱两可的额外小时的标准方法是什么?

到目前为止,我使用本地时间格式显示和解析日期和时间。例如。1. January 2014, 15:27

我正在使用基于位置的时区,例如"欧洲/柏林"。而且我不能只是更改为普通的GMT偏移量,因为我确实需要在日期进行计算。否则,我会在跨DST更改日期移动时会得到错误的绝对时间。

所有这些都很好,除了DST结束时的一小时(例如2014年10月26日,上午2点至凌晨3点)。我需要以稍后可以再次解析的方式提出它。

是否有标准格式?我只添加一个自定义符号吗?我是否还在地理时区使用GMT偏移?我怎么知道使用这种特殊格式 - 因为我不想一直打印它,因为它是一年中的大部分时间。

马特·约翰逊(Matt Johnson)的答案是正确且有见地的。

Java 8&Java.Time。*

让我从新的java.time中添加另一个列表。

Java.Time.ZonedDateTime使用的默认值是使用方括号在时区名称且没有空格的串联字符串。

2014-10-26T13:49:48.278 01:00 [欧洲/柏林]


@mattjohnson如果您愿意,请随时将此答案的内容合并。

没有标准将所有内容结合在一起。您可以获得的最接近的是两个字段。一个将是ISO8601/RFC3339日期 时间 偏移,另一个将是IANA/OLSON时区。

根据您的平台,您可能会有一个代表同时代表的单个对象,例如joda time中的 DateTime或noda time中的 ZonedDateTime。但是没有标准化表示为字符串。

这是我看到的:

  • 两个完全独立的字符串:

    "2014-10-26T02:00:00+01:00"
    "Europe/Berlin"
    
  • 一个串联的字符串,空间分开:

    "2014-10-26T02:00:00+01:00 Europe/Berlin"
    
  • 一个带有空间并使用括号的串联字符串:

    "2014-10-26T02:00:00+01:00 (Europe/Berlin)"
    
  • 一个无空间的串联字符串,但带有方括号:(感谢Basil)

    "2014-10-26T02:00:00+01:00[Europe/Berlin]"
    
  • 作为JSON,带有一些预定的字段名称:

    {
        value: "2014-10-26T02:00:00+01:00",
        zone: "Europe/Berlin"
    }
    
  • AS XML,带有一些预定的属性名称:

    <TimeStamp Value="2014-10-26T02:00:00+01:00" Zone="Europe/Berlin" />
    
  • 作为XML,带有一些预定的元素名称:

    <TimeStamp>
        <Value>2014-10-26T02:00:00+01:00</Value>
        <Zone>Europe/Berlin</Zone/>
    </TimeStamp>
    

这些都可以接受。选择适合您情况的一种或适应类似的事物。

关于您的问题:

...我怎么知道什么时候使用这种特殊格式...

当您录制已经过去并且无法更改的事件时,您就不需要存储时区。日期 时间 偏移值仅足够。否则,您都需要两个。

相关内容

  • 没有找到相关文章

最新更新