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 

      

      

      

      

      

      

  • 相关阅读:
    Monkey Studio IDE | The way IDEs should be
    ImportError: No module named pysqlite2 chinacloud 博客园
    EF架构——code first开发中,在修改实体时,自动影响到数据表上
    你必须要知道的架构知识~目录
    MVC中业务层是否应该有个基类?它有什么作用?
    解决COOKIES存储中文乱码的问题
    C#代码是更具艺术性的,选择她,因为喜欢她
    arm驱动程序——按键程序6_互斥1—原子操作(韦东山的视频总结及针对linux2.6.30)
    Oracle体系结构及备份(十)——sgaothers_pool
    Linux进程间通信(三)管道通信之有名管道及其基础实验
  • 原文地址:https://www.cnblogs.com/sure/p/3714792.html
Copyright © 2011-2022 走看看