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

经过一番尝试后,我意识到它始终包含相同的常量,并且查看System.Locale的源代码后很快发现它实际上只是一个常量。 (后来我意识到该类型也告诉我。由于defaultTimeLocale不是IO值,并且不接受任何参数,因此它必须是常量。)

在Haskell中,相对于当前语言环境如何获取当前TimeLocale

最佳答案

System.CurrentLocale.currentLocale :: IO TimeLocale

从包current-locale
看起来很合适。

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

可能可以改写为使用某些C或POSIX函数。

10-08 05:15