使用正确的区域设置解释日期字符串(Bash,date)

时间:2017-12-04 12:27:56

标签: linux bash date locale

我希望从用户输入中读取日期字符串,并将其转换为bash脚本中的一致格式。我在使用国际语言环境时遇到困难,因为date命令默认为美国日期格式(mm / dd / yyyy)而我在英国,所以我的用户更有可能使用dd-mm-yyyy。但是,我不希望限制他们的输入法,所以如果用户输入yyyy-mm-dd,dd-mmm-yyyy等,我仍然希望使用他们的输入并正确解释它们。

到目前为止,我发现这个语法很接近: date "+%Y-%m-%d" -d %DATETOCHECK

样本输入 - >输出:

31-Dec-2017  --> 2017-12-31 [OK]
2017-12-31   --> 2017-12-31 [OK]
31/12/2017   --> Fails with return code 1

如果可能的话,我想使用date命令,因为这已经具有极大的灵活性。

问题:如何才能使它始终假定dd / mm / yyyy永远不会是mm / dd / yyyy?

(我已尝试在我的脚本开头添加'export LC_ALL = en_GB',但这没有任何区别。也许我没有应用此权限,或者Locale没有设置我的预期)

使用Suse Linux Enterprise Desktop 10, Linux DCTL7132-13 2.6.16.21-0.8-smp #1 SMP Mon Jul 3 18:25:39 UTC 2006 i686 i686 i386 GNU/Linux

更新:这已被标记为另一个问题的副本。我同意我提出同样的问题,但我无法在对该问题的答复中找到合适的答案(linux bash - Parse date in custom format)。

此外,在该文章中,常见的语法是:

NOW=$(date +%c); echo $NOW

当我运行此操作时,我会得到“非法变量名称”的响应。 (啊,那是因为我的shell是tcsh;当我将它改为bash时,命令可以从命令行运行)

此致 佰

0 个答案:

没有答案