Linux BASH date命令:can';t重新组合日期和时间

Linux BASH date命令:can';t重新组合日期和时间,linux,bash,date,Linux,Bash,Date,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:

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。反正我是个“巴什主义者”,所以一定是巴什

编辑:更正的时间格式。谢谢你。
至于“$(..”,我已经养成了一种习惯,只要有可能就用双引号。

首先,使用
-d
14-09-2013
模式下是行不通的,你可以很容易地用一个命令设置日期和时间,并将其放入变量中。例如,只需在shell上尝试下面的方法,然后就可以将其放入shell脚本中

date --date="Feb 2 2014 13:12:10"  
Sun Feb  2 13:12:10 PST 2014

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


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

#split date and time
dldate="$(date -d "$dnow1" +"%Y-%m-%d")"

是的,行得通。谢谢!显然,这里的逻辑是最高的值应该排在第一位,即Y-m-d代表日期,H:m:S代表时间?你到底想实现什么<代码>设置--$(日期+%d-%m-%Y%H:%m:%S)将为您提供
$1
中的日期部分和
$2
中的时间%d-%m-%Y和%H:%m:%S分别是变量dldate和dltime。日期-d“${dldate}{dltime}”给出了错误的年份。但是,在这种情况下,按照konsolebox成员的建议,交换%Y和%d就可以了。也许我应该提到,这是关于虚拟日期,而不是硬件或软件日期。但是,为什么您需要变量中的虚拟日期,或者更确切地说,为什么您需要往返到
日期
?如果您能告诉我们您的实际最终目标,我们可能会提出一个解决方案,避免往返,或者更优雅地解决它。一堆文件都有一个随机名称,前面是K-keep R-remove D-done或ssss-for epoch秒作为下载时间/日期。在文本菜单中,下载时间/日期在YYYY-MM-DD HH:MM:SS中设置为单独的输入,如“设置日期:”和下一行“设置时间:”。日期/时间输入转换为历元秒,从而转换为所涉及文件的前缀。要在菜单中显示下载日期/时间,历元秒将转换回YYYY-MM-DD HH:MM:SS。此外,日期/时间输入可通过箭头键滚动(无需键入)。我希望这能解释为什么我使用变量来表示日期/时间。记住标记解决问题的答案。在标题或问题中添加“已解决”是不合适的,因为这不是一个论坛。