0

我在 bash 脚本中有以下几行:

TIME_START="20:00";

TIME_OLD_STRING=`date +%y%m%d`S`date --date=${TIME_START} +%H:%M`
echo ${TIME_OLD_STRING}
TIME_OLD_DATE=`date -d ${TIME_OLD_STRING} +%y%m%dS%H:%M`
echo ${TIME_OLD_DATE}

目的是将表单的字符串转换为表单HH:MM的日期current_date HH:MM

我的问题是,对于上面的行,我得到以下回显输出:

130820S20:00
130820S17:00

当前日期是 2013 年 8 月 20 日,但时间不是预期的,因此转换错误。我期望第二个输出也是 130820S20:00

我做错了什么,我该如何纠正?或者至少我从这里走哪条路。

4

1 回答 1

1

第二个日期命令没有TIME_OLD_STRING正确解释。仅了解其中的日期部分,因此它使用当前时间。

从 date(1) 手册页:

--date=STRING 是大多数自由格式的人类可读日期字符串,例如“Sun, 29 Feb 2004 16:21:42 -0800”或“2004-02-29 16:21:42”甚至“下周四” . 日期字符串可以包含指示日历日期、时间、时区、星期几、相对时间、相对日期和数字的项目。空字符串表示一天的开始。日期字符串格式比这里容易记录的要复杂,但在 info 文档中有完整的描述。

如果您需要两次相同的输出(这就是您的示例中的样子),只需添加另一个

echo ${TIME_OLD_STRING}

否则,第二个 date 命令究竟应该做什么?

于 2013-08-20T12:26:24.093 回答