我在处理日期时遇到一些问题,它们被解释为美国格式 (mm-dd) 而不是欧盟/澳大利亚格式 (dd-mm)。看起来date
不尊重我的区域设置,或者它们设置不正确。
# This is correct, date read as US mm-dd-yy format
$ LC_TIME="en_US" date +%Y-%m-%d -d 1/2/03
2003-01-02
# This is incorrect, dates are read as US mm-dd-yy instead of AU dd-mm-yyyy
$ LC_TIME="en_AU" date +%Y-%m-%d -d 1/2/03
2003-01-02
区域设置看起来不错,date
可以生成正确的格式:
$ LC_TIME="en_US" date +%x -d 2003-02-01
02/01/2003
$ LC_TIME="en_AU" date +%x -d 2003-02-01
01/02/03
这是 中的错误date
,还是您需要执行其他操作才能使其在读取短日期时尊重区域设置?
答案1
GNUdate
-d
选项期望提供的日期采用“与区域设置无关的格式”,即POSIX
就xx/yy/zz
日期而言本质上意味着美国格式。