从参数创建bash日期/时间变量

时间:2013-05-21 20:19:56

标签: bash datetime bsd

给出一个像这样传递的参数:

~/Documents/checkout/check-out.sh potatoes '2013/05/22 13:43:00'

使用第1行或第2行,生成

st=`date --date "$2" +%s`                   # mogul's suggestion
st=$(date --date="$2" +%s)                  # Kent's suggestion
st=$(date --date="2013/05/22 14:45:00" +%s)

date: illegal option -- -
usage: date [-jnu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ... 
    [-f fmt date | [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format]

4 个答案:

答案 0 :(得分:4)

OS X的date版本无法理解--date选项;您需要使用-f并为其指定输入日期的格式:

st=$(date -j -f "%Y/%m/%d %T" "$2" +%s)

例如:

$ date -j -f "%Y/%m/%d %T" "2013/05/22 14:45:00" +%s
1369259100

答案 1 :(得分:1)

你的OSX附带BSD date,而不是GNU date,所以没有GNU风格的选项(你可以通过macports或homebrew安装GNU date。)

答案 2 :(得分:0)

x='2013/05/22 13:43:00'
st=`date --date "$x" +%s`

似乎在这里工作。或者在你的情况下它应该是

st=`date --date "$2" +%s`

答案 3 :(得分:0)

试试这个:

st=$(date --date="$2" +%s)