如何用秒解析时区偏移量?

问题描述

如何使用 Haskell 的 time 库解析时间戳“1920-12-24 17:23:24-06:36:36”?我试过“%Y-%m-%d %T%Q %z”,但由于%z does not accept seconds,它不起作用。

如何将这种样式的时间戳忠实地解析为 ZonedTime

解决方法

我认为这根本不可能。 TimeZone 类型定义为:

data TimeZone

时区是从 UTC 偏移的整数分钟数,连同 一个名字和一个“只为夏天”的标志。

Constructors
 TimeZone  
   timeZoneMinutes :: Int

从 UTC 偏移的分钟数。正表示当地时间将晚于 UTC。

[...]

因此,无法在时区中表示秒。

可能有一些(我不知道的)国际标准,其中规定时区规定与 UTC 没有任何区别,不是整分钟的倍数,因此任何带秒的时区都是无效的.

您最好的选择似乎是手动解析该字符串并在使用库解析时间值之前删除秒数。