我有一些字符串(从文件中读取),例如“F16 Dec 16 16:12:24 CST 2016”,以及如何通过shell将此字符串转换为时间戳?
我需要时间戳,例如
Fri Dec 16 16:27:28 CST 2016
- >1481876854
shell cmd date
打印Fri Dec 16 16:12:24 CST 2016
,所以我认为date
有一些方法可以做到。
但我找不到解决方案,有人可以帮助我吗?
macos 10.12.2
答案 0 :(得分:2)
对于FreeBSD date
,您可以使用格式为-j
-f
的{{1}}标记
"%a %b %d %T %Z %Y"
如果您使用基于date -j -f "%a %b %d %T %Z %Y" "Fri Dec 16 16:27:28 CST 2016" +"%s"
1481876854
的{{1}}命令,则可以使用GNU
标记转换为date
时间戳,即
EPOCH
答案 1 :(得分:1)
根据您的规范(时间格式),如果date
不起作用或不可用,那么繁重的工具
echo "Fri Dec 16 16:27:28 CST 2016" \
| gawk -F '[[:blank:]:]' 'BEGIN{
split( "Jan Feb Mar Apr May Jun Jul Agu Sep Oct Nov Dec", Temp, " ")
for (t in Temp) Month[ Temp[t]] = t < 10 ? "0" t : t
}
{
# mktime assume ISO C time format: "YYYY MM DD HH MM SS [DST]"
ISOTime = sprintf( "%d %s %s %s %s %s\n", $8, Month[ $2], $3 < 10 ? "0" $3 : $3, $4, $5, $6)
print mktime( ISOTime)
}
'