Chinaunix

标题: 请各位帮忙看个date修改时间的问题,3Q! [打印本页]

作者: youcaihuazi    时间: 2014-10-29 18:06
标题: 请各位帮忙看个date修改时间的问题,3Q!
文件中的时间是UTC时间,需要在这个时间上加上8小时变成北京时间,请问怎么用date直接修改?
时间格式如下:
20141022093000

作者: jason680    时间: 2014-10-29 20:32
回复 1# youcaihuazi

$ echo 20141022093000 | sed -r 's/(....)(..)(..)(..)(..)(..)/\1-\2-\3 \4:\5:\6/'| xargs -i date -d "{} GMT" "+%Y%m%d%H%M%S"
20141022173000

Note: maybe you need modify GMT to -8

作者: youcaihuazi    时间: 2014-10-30 09:45
非常感谢高手指点,因为系统时间现在不能修改,原始代码也是直接将系统UTC事件写入文件,所以需要将文件里最后一个字段时间转换为GMT。还请再帮忙看看怎么转换?
原始文件格式如下:
ID03440321|0|10000|20141023020934
转换格式如下:
ID03440321|0|10000|20141107020934


作者: jason680    时间: 2014-10-30 10:27
本帖最后由 jason680 于 2014-10-30 10:34 编辑

回复 3# youcaihuazi

1. debug by yourself

2. you can change +0 to  +8,-8,... for the right answer what you want
Note: all reply DIDNOT modify your system time

$ cat FILE
ID03440321|0|10000|20141023020934

$ awk 'BEGIN{FS=OFS="|"}{d=gensub(/(....)(..)(..)(..)(..)(..)/,"\\1-\\2-\\3 \\4:\\5:\\6","",$4);cmd="date -d \""d" +0\" \"+%Y%m%d%H%M%S\"";cmd | getline D;print "debug: "d"=>"D;$4=D;print}' FILE
debug: 2014-10-23 02:09:34=>20141023100934
ID03440321|0|10000|20141023100934

   
作者: youcaihuazi    时间: 2014-10-30 11:10
感谢高手指点,3q!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2