📌  相关文章
📜  shell 脚本中的字符串到日期 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:05:12.286000             🧑  作者: Mango

Shell脚本中的字符串到日期

Shell脚本中经常需要将字符串转换为日期格式,该过程并不复杂,但需要遵循一些规则。

四个重要命令

在Shell脚本中将字符串转换为日期需要涉及以下四个命令:

date

date命令是将日期和时间格式化的通用工具,如果只传递一个参数,它将输出当前日期和时间。

date +"%Y-%m-%d %H:%M:%S"
touch

touch命令用来更改文件的时间戳,但是它也可以用来创建新文件。还可以将文件的修改时间和访问时间更改为指定的日期和时间。

touch -t 201801151615.25 test.txt
cut

cut命令是一个用于提取文本中指定段的命令,其选项(-c、-f、-d)用于指定要提取的字符、字段和分隔符。

echo "201801151615.25" | cut -c1-8
echo "201801151615.25" | cut -c9-10
echo "201801151615.25" | cut -c11-12
echo "201801151615.25" | cut -c13-14
echo "201801151615.25" | cut -c15-16
echo "201801151615.25" | cut -c17-18
expr

expr命令是一种处理整数的简单方法,主要支持加、减、乘、除和求余运算符。

expr 2 + 2
expr 2 \* 2
expr 4 / 2
代码片段

下面是一个将字符串“201801151615.25”转换为时间戳“2018-01-15 16:15:25”的Shell脚本代码片段:

#!/bin/bash
datetime="201801151615.25"
year=$(echo $datetime | cut -c1-4)
month=$(echo $datetime | cut -c5-6)
day=$(echo $datetime | cut -c7-8)
hour=$(echo $datetime | cut -c9-10)
minute=$(echo $datetime | cut -c11-12)
second=$(echo $datetime | cut -c13-14)
timestamp=$(date -d "$year-$month-$day $hour:$minute:$second" +%s)
result=$(date -d @$timestamp +"%Y-%m-%d %H:%M:%S")
echo $result

以上代码使用cut命令将字符串中的年、月、日、时、分、秒提取出来,并使用date命令将它们转换为时间戳。最后,使用date命令将时间戳转换为指定格式的日期时间字符串。