Java Date与SimpleDateFormat

最近在弄一些涉及到时间处理的项目。本来自己写了一个时间转换函数,虽然能用但是过于麻烦而且不够规范,于是学习了下java自带的时间处理的类。

public class Timechg {
    public static int ymd[][][]= new int[110][13][33];
    public static int day[][][] = new int[25][61][61];
    
    public static int _ymd[][] = new int[110*13*33+1][3];
    public static int _day[][] = new int[25*61*61+1][3];
    
    public static int save[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
    
    public final static int ONEDAYS = 24*60*60;
    
    public static void timeinit()
    {
        int y=2000,m=1,d=1;
        int cnt=0;
        ymd[y-2000][m][d] = cnt;
        _ymd[cnt][0]=y;_ymd[cnt][1]=m; _ymd[cnt][2]=d;
        while(y<2100)
        {
            if( (y%4==0&&y%100!=0)||(y%400==0) ) save[2]=29;
            else save[2]=28;
            d++;
            cnt++;
            if(d>save[m])
            {
                m++;
                d=1;
                if(m>12)
                {
                    y++;
                    m=1;
                }
            }
            ymd[y-2000][m][d] = cnt;
            _ymd[cnt][0]=y;_ymd[cnt][1]=m; _ymd[cnt][2]=d;
        }
        
        int h=0,s=0;
        m=0;// 时,分,秒
        cnt=0;
        day[h][m][s]=cnt;
        _day[cnt][0]=h; _day[cnt][1]=m; _day[cnt][2]=s;
        
        while(true)
        {
            cnt++;
            s++;
            if(s==60)
            {
                s=0;
                m++;
                if(m==60)
                {
                    m=0;
                    h++;
                    if(h==24)
                    {
                        break;
                    }
                }
            }
            day[h][m][s] = cnt;
            _day[cnt][0]=h; _day[cnt][1]=m; _day[cnt][2]=s;
        }
        
    }
    /**
     * time 的格式为yyyyMMddHHmmSS
     * @param time
     * @return
     */
    public static int strtoint(String time)
    {
        int y,M,d,H,m,S;
        y = Integer.parseInt( time.substring(0, 4) );
        M = Integer.parseInt( time.substring(4, 6) );
        d = Integer.parseInt( time.substring(6, 8) );
        H = Integer.parseInt( time.substring(8, 10) );
        m = Integer.parseInt( time.substring(10, 12) );
        S = Integer.parseInt( time.substring(12, 14) );
        
        return ymd[ y-2000<0?0:y-2000 ][M][d]*ONEDAYS + day[H][m][S];
    }
    
    public static String inttostr(int time)
    {
        StringBuffer timestr=new StringBuffer("");
        int intymd,intday;
        intymd = time/ONEDAYS;
        intday = time%ONEDAYS;
        timestr.append(String.format("%04d",_ymd[intymd][0]));
        timestr.append(String.format("%02d",_ymd[intymd][1]));
        timestr.append(String.format("%02d",_ymd[intymd][2]));
        
        timestr.append(String.format("%02d",_day[intday][0]));
        timestr.append(String.format("%02d",_day[intday][1]));
        timestr.append(String.format("%02d",_day[intday][2]));
        
        return timestr.toString();
    }
    
        
}
垃圾代码

 

例1 格式化输出当前系统时间

Date date=new Date();//获取当前时间
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); 
System.out.println(df.format(date)); 

例2 将字符串格式时间转化为时间戳

SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
Date date=null;
try {
    date = simpleDateFormat.parse("2010-06-25-00-00-00");
} catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
long time = date.getTime();//从1970年1月1日开始精确的毫秒,若要得到秒为单位,需要/1000
System.out.println(time);

例3 得到Date对象内的年月日等

        Date date=new Date(); 
        System.out.println(date.toString());
        System.out.println(date.getYear()+1900);
        System.out.println(date.getMonth()+1);
        System.out.println(date.getDate());//注意date.getday()是获得星期几,0-6分别表示从星期日,星期一,。。。,星期六

 

posted @ 2016-06-12 23:18  chenhuan001  阅读(226)  评论(0编辑  收藏  举报