zoukankan      html  css  js  c++  java
  • Linux 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
    ",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
    ",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
    ",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
    ",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
    ",yy,mm,dd,hh,nn,ss,ms)
        }'
    }
    milliseconds2date 1282157959073
    

    计算今天的N天之后的日期

    #!/bin/bash
    function date2days {
        echo "$1 $2 $3" | 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
        }'
    }
    
    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
    ",yy,mm,dd)
        }'
    }
    
    year=`date +%Y`; month=`date +%m`; day=`date +%d`
    days=`date2days $year $month $day`
    N=5
    let days-=$N
    days2date $days
    

      

     其他:http://bbs.chinaunix.net/thread-1772999-1-1.html 

      

      

      

      

      

      

  • 相关阅读:
    .bat文件打开指定网页,并运行jar包
    jar包制作一个可执行文件
    如何让局域网其他电脑通过IP直接访问自己电脑的网站
    Sypder 安装和使用
    tomcat服务器输入localhost可以访问,ip无法访问解决办法
    【转载】高性能网站建设
    网站优化
    JavaWeb 项目开发中的技术总结
    反射工具类——ReflectUtils
    Ajax 的缺点
  • 原文地址:https://www.cnblogs.com/sure/p/3714792.html
Copyright © 2011-2022 走看看