首页 > 系统 > Linux > 正文

Shell使用Epoch进行日期时间转换和计算的几个小函数

2019-10-26 18:49:19
字体:
来源:转载
供稿:网友

核心代码

当你遇到一个date命令不给力的系统时,可以试试这几个小函数。#日期转天数function date2days {  echo "$*" | awk '{    z=int((14-$2)/12); y=$1+4800-z; m=$2+12*z-3;    j=int((153*m+2)/5)+$3+y*365+int(y/4)-int(y/100)+int(y/400)-2472633;    print j  }'}date2days `echo "2010-08-18 18:59:19" | sed 's/-/ /g;s/:/ /g'`#天数转日期function days2date {  echo "$1" | awk '{    a=$1+2472632; b=int((4*a+3)/146097); c=int((-b*146097)/4)+a;     d=int((4*c+3)/1461); e=int((-1461*d)/4)+c; m=int((5*e+2)/153);    dd=-int((153*m+2)/5)+e+1; mm=int(-m/10)*12+m+3; yy=b*100+d-4800+int(m/10);    printf ("%4d-%02d-%02d/n",yy,mm,dd)  }'}days2date 14839#日期转分钟function date2minutes {  echo "$*" | awk '{    z=int((14-$2)/12); y=$1+4800-z; m=$2+12*z-3;    j=int((153*m+2)/5)+$3+y*365+int(y/4)-int(y/100)+int(y/400)-2472633;    j=j*1440+$4*60+$5    print j  }'}date2minutes `echo "2010-08-18 18:59:19" | sed 's/-/ /g;s/:/ /g'`#分钟转日期function minutes2date {  echo "$1" | awk '{    i=$1; nn=i%60; i=int(i/60); hh=i%24; dd=int(i/24); i=int(i/24);    a=i+2472632; b=int((4*a+3)/146097); c=int((-b*146097)/4)+a;     d=int((4*c+3)/1461); e=int((-1461*d)/4)+c; m=int((5*e+2)/153);    dd=-int((153*m+2)/5)+e+1; mm=int(-m/10)*12+m+3; yy=b*100+d-4800+int(m/10);    printf ("%4d-%02d-%02d %02d:%02d/n",yy,mm,dd,hh,nn)  }'}minutes2date 21369299#日期转秒数function date2seconds {  echo "$*" | awk '{    z=int((14-$2)/12); y=$1+4800-z; m=$2+12*z-3;    j=int((153*m+2)/5)+$3+y*365+int(y/4)-int(y/100)+int(y/400)-2472633;    j=j*86400+$4*3600+$5*60+$6    print j  }'}date2seconds `echo "2010-08-18 18:59:19" | sed 's/-/ /g;s/:/ /g'`#秒数转日期function seconds2date {  echo "$1" | awk '{    i=$1; ss=i%60; i=int(i/60); nn=i%60; i=int(i/60); hh=i%24; dd=int(i/24); i=int(i/24);    a=i+2472632; b=int((4*a+3)/146097); c=int((-b*146097)/4)+a;     d=int((4*c+3)/1461); e=int((-1461*d)/4)+c; m=int((5*e+2)/153);    dd=-int((153*m+2)/5)+e+1; mm=int(-m/10)*12+m+3; yy=b*100+d-4800+int(m/10);    printf ("%4d-%02d-%02d %02d:%02d:%02d/n",yy,mm,dd,hh,nn,ss)  }'}seconds2date 1282157959#日期转毫秒function date2milliseconds {  echo "$*" | awk '{    z=int((14-$2)/12); y=$1+4800-z; m=$2+12*z-3;    j=int((153*m+2)/5)+$3+y*365+int(y/4)-int(y/100)+int(y/400)-2472633;    j=j*86400+$4*3600+$5*60+$6    printf ("%d%s/n",j,$7)  }'}date2milliseconds `echo "2010-08-18 18:59:19.073" | sed 's/-/ /g;s/:/ /g;s//./ /g'`#毫秒转日期function milliseconds2date {  echo "$1" | awk '{    i=$1; ms=i%1000; i=int(i/1000); ss=i%60; i=int(i/60); nn=i%60; i=int(i/60); hh=i%24; dd=int(i/24); i=int(i/24);    a=i+2472632; b=int((4*a+3)/146097); c=int((-b*146097)/4)+a;     d=int((4*c+3)/1461); e=int((-1461*d)/4)+c; m=int((5*e+2)/153);    dd=-int((153*m+2)/5)+e+1; mm=int(-m/10)*12+m+3; yy=b*100+d-4800+int(m/10);    printf ("%4d-%02d-%02d %02d:%02d:%02d.%03d/n",yy,mm,dd,hh,nn,ss,ms)  }'}milliseconds2date 1282157959073

应用实例:

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表