获取当前区域设置的日期格式

Kri*_*itz 6 haskell date internationalization

当我第一次偶然发现常量defaultTimeLocaleSystem.Locale,我认为它应该包含当前语言环境的默认TimeLocale.

经过一些尝试,我意识到它总是包含相同的常量,并查看源代码System.Locale快速显示它实际上只是一个常量.(后来我意识到这种类型也告诉我.由于defaultTimeLocale它不是一个IO值而且不带任何参数,它必须是常量.)

在Haskell中获取TimeLocale当前语言环境的当前方法是什么?

chi*_*chi 2

System.CurrentLocale.currentLocale :: IO TimeLocale
Run Code Online (Sandbox Code Playgroud)

从包current-locale 看起来合适。

我没有测试它。看看它的源代码,它应该可以工作。我实际上不太喜欢它,因为它下面产生了四个 date子进程(!),这对于这个简单的任务来说是相当过大的,恕我直言。

也许可以重写它以使用某些 C 或 POSIX 函数。

  • 生成日期进程的问题更严重,因为它似乎只适用于 GNU 日期版本。(在mac上失败) (2认同)
  • @Kritzefitz 那么它确实需要重写。您可以尝试编写相关的 C 绑定(可能只是一个函数),或者查看其他包是否具有更好的区域设置处理 - 但我没有找到任何东西。 (2认同)