Awk 如何使用mktime以毫秒信息更改时间。保留?
比如说 我想把Awk 如何使用mktime以毫秒信息更改时间。保留?,awk,Awk,比如说 我想把13.29s添加到2013-4-24 3:10:50.50 如何处理毫秒 我曾尝试使用mktime和strftime,但似乎只能处理秒数…这不是一件简单的事情,但现在我们开始: time="2013-4-24 3:10:50.50" echo "13.29" | awk '{split(v,a,"[ -:.]");t=mktime(a[1]" "a[2]" "a[3]" "a[4]" "a[5]" "a[6])+(a[7]/100)+$1;print strftime("%Y-%m
13.29s
添加到2013-4-24 3:10:50.50
如何处理毫秒
我曾尝试使用
mktime
和strftime
,但似乎只能处理秒数…这不是一件简单的事情,但现在我们开始:
time="2013-4-24 3:10:50.50"
echo "13.29" | awk '{split(v,a,"[ -:.]");t=mktime(a[1]" "a[2]" "a[3]" "a[4]" "a[5]" "a[6])+(a[7]/100)+$1;print strftime("%Y-%m-%d %H:%M:%S",t)"."(t-int(t))*100}' v="$time"
2013-04-24 03:11:03.79
解释
echo "13.29" | awk '
{
split(v,a,"[ -:.]") # Split the date string into separate parts
t=mktime(a[1]" "a[2]" "a[3]" "a[4]" "a[5]" "a[6])+(a[7]/100)+$1 # Convert to epoch time and add milliseconds and calcualte the new value
print strftime("%Y-%m-%d %H:%M:%S",t)"."(t-int(t))*100 # Convert back to normal time format and print it out
}
' v="$time" # Read the variable
awk确实是一个强大的工具,但我不认为awk是这里的最佳选择,我会选择
gnu date
请参见带有示例数据的测试:
#add 13.29s to date 2013-4-24 3:10:50.50
kent$ date -d'+13.29 second 2013-4-24 3:10:50.50' +"%F %T.%N"
2013-04-24 03:11:03.790000000
我知道纳秒有尾随的零。但我认为如果你想移除它们,对你来说不会有问题
如果必须使用awk,您可以从awk调用外部命令。谢谢!所以,没有简单的方法,必须为毫秒进位添加IF。。。