我需要检索日期的月份(dd.month.year)并将其转换为数字YYYY-MM
源月份是法语的,所以我尝试:
# date --date="$(printf "01 %s" "January 2020")" +"%Y-%m"
2020-01
# LC_TIME=fr_FR date --date="$(printf "01 %s" "Janvier 2020")" +"%Y-%m"
date: invalid date '01 Janvier 2020'
# LANG=fr_FR date --date="$(printf "01 %s" "Janvier 2020")" +"%Y-%m"
date: invalid date '01 Janvier 2020'当我在英语中使用月份时,它可以工作。
但是,对于法语月份,即使强制使用语言或本地环境参数,它也无法正确识别月份。
即使日期很简单,它仍然在我们身上宣告:
# LANG=fr_FR date
Sun May 17 23:45:40 CEST 2020
# LC_TIME=fr_FR date
Sun May 17 23:45:48 CEST 2020
# date
Sun 17 May 2020 11:45:53 PM CEST有什么想法吗?
info :
Operating System: Debian GNU/Linux 10 (buster)
Kernel: Linux 4.19.0-8-amd64
Architecture: x86-64发布于 2020-05-18 17:59:49
尽管date所做的解析有时非常灵活且令人惊叹,但它不能处理本地化(here和the array is static here)。您必须构建一个自己将Janvier转换为January的转换数组,然后将结果传递给date。
使用关联bash数组可以很容易地做到这一点:
arr=([Janvier]=January etc)
echo "${arr[Janvier]}"https://stackoverflow.com/questions/61866730
复制相似问题