将本地化日期字符串转换为纪元

将本地化日期字符串转换为纪元

我正在尝试转换date字符串大陆葡萄牙语使用 回到纪元时间bash。我的默认区域设置是en_US.utf8

我的示例字符串是Mai 12 06:58:47 WEST 2015

我已经尝试过这样做:

LC_TIME="pt_PT.utf8" date --date="Mai 12 06:58:47 WEST 2015" +%s    
LC_ALL="pt_PT.utf8" date --date="Mai 12 06:58:47 WEST 2015" +%s

第一个命令返回错误date: invalid date,第二个命令返回相同的葡萄牙语错误。

我也尝试过pt_PT这没有意义,我认为,因为我没有安装该语言环境。

我该怎么做?

答案1

GNUdate只能理解英文,

您可以尝试 ksh93:

$ LC_ALL=pt_PT.UTF-8 ksh -c 'printf "%(%F)T\n" "Mai 12 06:58:47 WEST 2015"'
2015-05-12

或者zsh

zmodload zsh/datetime
strftime -rs t "%b %d %H:%M:%S %Z %Y" "Mai 12 06:58:47 WEST 2015"
strftime %F $t

答案2

可悲的是,对于 GNUdate目前这是不可能的。来自文档

'--date=datestr'

显示 datestr 中指定的日期和时间,而不是当前日期和时间。 datestr 几乎可以采用任何常见格式。它可以包含月份名称、时区、'am' 和 'pm'、'yesterday' 等。例如,--date="2004-02-27 14:19:13.489392193 +0530" 指定的时刻2004 年 2 月 27 日下午 2:19:13 后的时间为 489,392,193 纳秒,时区位于 UTC 以东 5 小时 30 分钟。
注意:当前输入必须采用与区域设置无关的格式。例如,需要下面的 LC_TIME=C 才能在许多语言环境中打印回正确的日期

date -d "$(LC_TIME=C date)"

(强调已添加)

相关内容