我正在尝试将 Ubuntu Mate 20.04 上的一些未来日期转换为纪元号。
所以我决定编写这段代码:
daysAmount="10"
endDate=$(date +"%b %_d %Y" -d "+$daysAmount days")
epochNum=$(date -d "$endDate" +%s)
前两行运行良好,但我没有得到任何信息epochNum=
。
$(date)
像我这样在里面写另一个变量可以吗?如果没有,我怎样才能让这个东西发挥作用?
我也尝试过,endDate=$(date +"%b %_d %Y" -d "+$daysAmount days" +%s)
但这也不起作用。
答案1
您可以使用临时区域设置运行命令。这应该可以解决您的问题:
daysAmount="10"
endDate=$(LC_ALL=C date +"%b %_d %Y" -d "+$daysAmount days")
epochNum=$(LC_ALL=C date -d "$endDate" +%s)
答案2
设法让它发挥作用。
在转换为纪元之前检查您的日期语言。如果您的安装名称与美国字母表不同,如此处的“date”命令示例:
1.11.2021 (пн) 14:47:59 EET
转换将不起作用。
在不同的机器上,“日期”显示如下(美国字母表):
Mon Nov 1 14:47:45 EET 2021
代码运行得很好
有关不同语言机器上的工作示例,请参阅: https://unix.stackexchange.com/a/675661/499362