使用 shell 将字符串转换为时间

使用 shell 将字符串转换为时间

我有一个 shell 脚本,它将从数据库中提取时间 (h:m:s) 并将该时间与当前时间进行比较,以根据比较结果采取操作。

我使用此命令获取当前时间

currenttime=$(date +%H%M%S);

我从数据库收到的时间是 peak_time,格式为 H:M:s,所以我使用这段代码从那个时间删除了 :

 peak_time=`$peak_time' | sed s/://g `

现在我需要使用此命令将最后的结果转换为时间

 peak_time=$(date -d "$peak_time" +%H%M%S);

但我收到这个错误

日期:无效日期‘190000’

所以请告诉我如何解决这个问题

答案1

你的命令不正确。

首先,您尝试在此处“执行”变量赋值:

peak_time=`$peak_time' | sed s/://g ` 

要正确运行此命令你应该写入:

peak_time=$(echo $peak_time | sed 's/://g')

但是,就像有些人在评论中所说的那样,除了最后一步之外,你不需要更多步骤:

peak_time=$(date -d "$peak_time" +%H%M%S)

答案2

我不完全确定您要做什么,但是从流程中删除此步骤:peak_time=$peak_time' | sed s/://g 将使下一步起作用,因为您已经有效地将时间字符串从 19:00:00 转换为 190000 之类的值date

相关内容