时间转换格式操作


import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public final class DateUtil
{
    public static Date strToDate(String str)   
    {
        String date = toStr(str).replace(' ', '-');
        date = date.replace(':', '-');
        date = date.replace('.', '-');
        date = date.replace('/', '-');
        date = date.replaceAll("-", "");
        //System.err.println(str+"--[34]--"+date);
        return intArrToDate(strToIntArr(date));
    }

    private static int[] strToIntArr(String ymdhms)
    {
     int[] ymd = new int[6];
     String str = toStr(ymdhms);  //ymdhms: yyyyMMddHHmmss
     if (str.length()>3) ymd[0] = toInt(str.substring(0,4));
     if (str.length()>5) ymd[1] = toInt(str.substring(4,6));
     if (str.length()>7) ymd[2] = toInt(str.substring(6,8));
     if (str.length()>9) ymd[3] = toInt(str.substring(8,10));
     if (str.length()>11) ymd[4] = toInt(str.substring(10,12));
     if (str.length()>13) ymd[5] = toInt(str.substring(12,14));
     //System.out.println("[23] y:"+ymd[0]+" M:"+ymd[1]+" d:"+ymd[2]+" H:"+ymd[3]+" m:"+ymd[4]+" s:"+ymd[5]);
        return ymd;
    }
 
    private static Date intArrToDate(int[] ymd)
    {
        try
        {
            if (ymd==null || ymd.length<6) return null;
            //System.out.println("[43] y:"+ymd[0]+" M:"+ymd[1]+" d:"+ymd[2]+" H:"+ymd[3]+" m:"+ymd[4]+" s:"+ymd[5]);
            if (ymd[0]>9999 || ymd[1]>12 || ymd[2]>31 || ymd[3]>24 || ymd[4]>60 || ymd[5]>60) return null;
            Calendar calendar = Calendar.getInstance();
            calendar.set(Calendar.YEAR, ymd[0]);
            calendar.set(Calendar.MONTH, ymd[1]-1);
            calendar.set(Calendar.DATE, ymd[2]);
            calendar.set(Calendar.HOUR_OF_DAY, ymd[3]);
            calendar.set(Calendar.MINUTE, ymd[4]);
            calendar.set(Calendar.SECOND,  ymd[5]);
            return calendar.getTime();
        }
        catch (Exception e)
        {
            System.err.println("[strToDate] error: "+e);
        }
        return null;
    }

    public static Date dateAdd(Date date, int type, int ymdhms)
    {
        if (date == null) return null;
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        switch (type) {
        case 1: // year
            calendar.add(Calendar.YEAR, ymdhms);
            break;
        case 2: // month
            calendar.add(Calendar.MONTH, ymdhms);
            break;
        case 3: // day
            calendar.add(Calendar.DATE, ymdhms);
            break;
        case 4: // hour
            calendar.add(Calendar.HOUR, ymdhms);
            break;
        case 5: // minute
            calendar.add(Calendar.MINUTE, ymdhms);
            break;
        case 6: // second
            calendar.add(Calendar.SECOND, ymdhms);
            break;
        }
        //6.second 5.minutes 4.hour 3.day 2.month 1.year
        return calendar.getTime();
    }
   
    public static int dateCompare(Date date1, Date date2)
    {
        long v1 = (date1==null?0l:date1.getTime());
        long v2 = (date2==null?0l:date2.getTime());
        if (v1 > v2) return 1;
        else if (v1 < v2) return -1;
        return 0;
    }
   
    public static String dateToStr(Date date, String style)
    {
        try
        {
            if (date==null) return "";
            if (style==null) return sdf.format(date);
            return (new SimpleDateFormat(style).format(date));
        }
        catch (Exception e)
        {
            System.err.println("[dateToStr] error: "+e);
        }
        return "";
    }
   
    //日期增加年份、月份、天数等并转换为long类型
    public static long dateAddToLong(String str,int mark, int ymdhms){
     return dateToLong(dateAdd(strToDate(str), mark, ymdhms));
    }
   
    public static long strToDateToLong(String ymdhms)
    {
     return dateToLong(intArrToDate(strToIntArr(ymdhms)));
    }

    public static long strToLong(String str)
    {
        return dateToLong(strToDate(str))/1000*1000;
    }
   
    public static long dateToLong(Date date)
    {
        return (date==null?0l:date.getTime()/1000*1000);
    }
   
    public static Date dateSub(Date date, int type, int ymdhms)
    {
        return dateAdd(date, type, 0 - ymdhms);
    }
   
    public static String strDateToStr(String str)
    {
        return dateToStr(strToDate(str));
    }
   
    public static String longToDateStr(long mills)
    {
        return dateToStr(mills<100l?null:new Date(mills));
    }
   
    public static Date longToDate(long mills)
    {
        return (mills<100l?null:new Date(mills));
    }
   
    public static Date dateSub(Date date, long minus)
    {
        return (date==null?null:longToDate(date.getTime()-minus));
    }
   
    public static Date dateAdd(Date date, long minus)
    {
        return (date==null?null:longToDate(date.getTime()+minus));
    }
   
    public static String dateToStr(Date date)
    {
        return (date==null?"":sdf.format(date));
    }   
   
    private static int toInt(Object obj)
    {
        try
        {
            return (toStr(obj).length()<1?0:Integer.parseInt(toStr(obj)));
        }
        catch (Exception e)
        {
            return 0;
        }
    }
   
    private static String toStr(Object obj)
    {
        return (obj==null?"":obj.toString().trim());
    }
   
    public static String longToDay(long minus1,long minus2)
    {
        long time=minus1-minus2;
        long d=time/(1000*60*60*24);
        long h=(time-d*(1000*60*60*24))/(1000*60*60);
        long m=(time-(d*24+h)*(1000*60*60))/(1000*60);
       
     return d+"d"+h+"h"+m+"m";
    }


    public static void main2(String[] args)
    {
        long v1 = System.currentTimeMillis();
        long v2 = (new Date()).getTime();
       
        System.out.println(" >>> [getTime --> currentTimeMillis] >> "+(v2-v1));
        //System.err.println(" >>> "+currDate()+" >>> "+currYMD()+" >>> "+currHMS());
        //System.err.println(" >>> "+longDate()+" >>> "+longYMD()+" >>> "+longHMS());
        System.out.println(" >>> [dateToStr --> longToDate] >> "+dateToStr(longToDate(v2)));
        v1 = 1201838400859l;
        System.err.println(" >>> [mills --> date] >> ["+v1+" --> "+dateToStr(longToDate(v1))+"]");
        System.out.println(" >>> [dateToStr --> longToDate ---> datatoLong] >> "+longToDateStr(v1));       
        Date d1 = new Date();
        Date d2 = new Date();
        System.out.println(" >>> [dateAdd year+2 ] ["+dateToStr(d1)+"] >> "+dateToStr(dateAdd(d1, 1, 2)));
        System.out.println(" >>> [dateAdd month+3] ["+dateToStr(d1)+"] >> "+dateToStr(dateAdd(d1, 2, 3)));
        System.out.println(" >>> [dateAdd day+5  ] ["+dateToStr(d1)+"] >> "+dateToStr(dateAdd(d1, 3, 5)));
        System.out.println(" >>> [dateAdd hour+8 ] ["+dateToStr(d1)+"] >> "+dateToStr(dateAdd(d1, 4, 80)));
        System.out.println(" >>> [dateAdd minute ] ["+dateToStr(d1)+"] >> "+dateToStr(dateAdd(d1, 5, 70)));
        System.out.println(" >>> [dateAdd second ] ["+dateToStr(d1)+"] >> "+dateToStr(dateAdd(d1, 6, 66)));
        System.err.println(" >>> [dateSub year+2 ] ["+dateToStr(d2)+"] >> "+dateToStr(dateSub(d2, 1, 2)));
        System.err.println(" >>> [dateSub month+3] ["+dateToStr(d1)+"] >> "+dateToStr(dateSub(d1, 2, 3)));
        System.err.println(" >>> [dateSub day+5  ] ["+dateToStr(d1)+"] >> "+dateToStr(dateSub(d1, 3, 5)));
        System.err.println(" >>> [dateSub hour+8 ] ["+dateToStr(d1)+"] >> "+dateToStr(dateSub(d1, 4, 80)));
        System.err.println(" >>> [dateSub minute ] ["+dateToStr(d1)+"] >> "+dateToStr(dateSub(d1, 5, 70)));
        System.err.println(" >>> [dateSub second ] ["+dateToStr(d1)+"] >> "+dateToStr(dateSub(d1, 6, 66)));       
        String str = "2010-11-15:10:52:55.122";
        System.err.println(" @@@ [dateToStr --> longToDate ---> datatoLong] >> "+dateToStr(strToDate(str)));
        System.err.println("------------------------------------------------------");
        DateFormat shortDateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
        DateFormat mediumDateFormat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM);
        DateFormat longDateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);
        DateFormat fullDateFormat = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL);
        System.out.println(shortDateFormat.format(d1));
        System.out.println(mediumDateFormat.format(d1));
        System.out.println(longDateFormat.format(d1));
        System.out.println(fullDateFormat.format(d1));
    }

    public static void main(String[] args) throws Exception
    {
//     String v1 = "2008-01-01 23:58:58";
//     Date d1 = strToDate(v1);
//     System.out.println(v1+ " >> "+dateToStr(strToDate(v1)));
//     System.out.println(v1+" add 1 hour "+dateToStr(dateAdd(d1, 4, 1)));
//     System.out.println(v1+" add 2 mins "+dateToStr(dateAdd(d1, 5, 2)));
//     System.out.println(v1+" add 3 secs "+dateToStr(dateAdd(d1, 6, 3)));
//     System.out.println("=============================================");
//     
//     String v2 = "2007-02-28 23:59:59";
//     Date d2 = strToDate(v2);
//     System.err.println(v2+ " >> "+dateToStr(strToDate(v2)));
//     System.err.println(v2+" add 1 hour "+dateToStr(dateAdd(d2, 4, 1)));
//     System.err.println(v2+" add 2 mins "+dateToStr(dateAdd(d2, 5, 2)));
//     System.err.println(v2+" add 3 secs "+dateToStr(dateAdd(d2, 6, 3)));
//     System.err.println(v2+" add 1 year "+dateToStr(dateAdd(d2, 1, 1)));
//     System.err.println(v2+" add 2 mons "+dateToStr(dateAdd(d2, 2, 2)));
//     System.err.println(v2+" add 3 days "+dateToStr(dateAdd(d2, 3, 3)));
     long l1=DateUtil.strToLong("2008-12-01 20:20:00");
     long l2=DateUtil.strToLong("2008-12-15 18:20:00");
     System.err.println(longToDay(l2,l1));
    }
   
    private DateUtil() { }
 private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值