0

Linux v2.4/Bash v3.2/GNU utils/date 命令版本 5.0

我正在努力使用 date 命令。在 BASH 应用程序中,用户可以单独设置日期和时间,从而为日期和时间生成单独的变量。此外,这些变量被重新组合,但这似乎不适用于 date 命令:我得到了一个不同的日期。然而,时间是一样的。测试代码:

#!/bin/bash
dnow1="$(date)"
echo "1 $dnow1"                             # --> Sat Sep 14 16:31:48 EDT 2013
#split date and time
dldate="$(date -d "$dnow1" +"%d-%m-%Y")"
echo "2 $dldate"                            # --> 14-09-2013
dltime="$(date -d "$dnow1" +"%H:%M:%S")"
echo "3 $dltime"                            # --> 16:31:48
#try to re-combine date and time
string="${dldate} ${dltime}"
echo "4 $string"                            # --> 14-09-2013 16:31:48
dnow2="$(date -d "$string")"
echo "5 $dnow2"                             # --> Thu Mar 5 16:31:48 EST 2020

我一定在这里遗漏了一些东西。任何人都可以启发我吗?谢谢!

注意:我正在使用资源很少/很少的原始 XBOX,因此没有其他解决方案(如 Python)的空间。无论如何,我是一个“bashist”,所以它一定是 BASH!

编辑:更正时间格式。谢谢马特。至于“$(....)”,我已经养成了尽可能双引号的习惯。

4

3 回答 3

1

获取日期时,请改用以下格式:

#split date and time
dldate="$(date -d "$dnow1" +"%Y-%m-%d")"
于 2013-09-14T14:21:21.137 回答
0

首先使用-d不会14-09-2013流行,您可以使用一个命令轻松设置日期和时间并将其放入变量中。例如,只需在 shell 上试​​试这个,然后你就可以放入 shell 脚本。

date --date="Feb 2 2014 13:12:10"  
Sun Feb  2 13:12:10 PST 2014
于 2013-09-14T09:56:39.173 回答
0

来自GNU 日期手册

date 命令的输出并不总是可以作为日期字符串接受,这不仅是因为语言问题,还因为像“IST”这样的时区项目没有标准含义。使用 date 生成打算稍后解析的日期字符串时,请指定与语言无关且不使用“UTC”和“Z”以外的时区项目的日期格式。

于 2013-09-14T09:58:42.853 回答