有人可以帮助我理解为什么我在下面的代码中通过mktime返回“-1”。感谢。
#!/usr/local/bin/bash
f_name="crap.stat"
S_Date="2012-02-10"
E_Date="2012-02-13"
gawk -F '\t' -v s_date="$S_Date" -v e_date="$E_Date" 'BEGIN {s_time = mktime(s_date);e_time = mktime(e_date);print s_time, e_time}' $f_name
答案 0 :(得分:4)
您必须为该功能使用特定格式。您的代码已修复:
#!/usr/local/bin/bash
f_name="crap.stat"
S_Date="2012-02-10"
E_Date="2012-02-13"
gawk -F '\t' -v s_date="$S_Date" -v e_date="$E_Date" '
BEGIN {
gsub( /-/, " ", s_date );
s_date = s_date " " 00 " " 00 " " 00;
s_time = mktime(s_date);
gsub( /-/, " ", e_date );
e_date = e_date " " 00 " " 00 " " 00;
e_time = mktime(e_date);
print s_time, e_time
}
' $f_name
结果:
1328828400 1329087600
它必须是下一种格式:YYYY MM DD HH MM SS[ DST]
,所以我用空格替换-
并在时间上附加零。