在 shell 脚本中将输入字符串转换为日期

在 shell 脚本中将输入字符串转换为日期

我的外壳脚本:

#!/bin/bash
echo "$1";
startd=$(date -d "$1" +"%Y%m%d"); 
echo "$startd";

我的命令:

须藤./test.sh“20151010”

输出:

20151010 
20150213

它打印了今天的日期而不是打印输入的日期,你知道吗?

答案1

OS X 版本date使用该-f选项来解析格式化的日期/时间:

date -j -f '%Y%m%d' "$1" +'%Y%m%d'

-j选项导致它只打印时间,而不尝试设置系统时钟。所以完整的脚本是:

#!/bin/bash
echo "$1";
startd=$(date -j -f '%Y%m%d' "$1" +'%Y%m%d'); 
echo "$startd";

这是一个文字记录:

$ ./testdate.sh 20151010
20151010
20151010

答案2

如果您尝试在 OS X 上格式化日期,您可以尝试以下操作:

date -j -f "%Y%m%d" "20151010"

我得到以下输出:

Sat Oct 10 17:27:28 CDT 2015

相关内容