您的位置:首页 > 其它

时间转换格式操作

2009-02-28 17:24 183 查看
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");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐