package com.akjava.lib.common.utils; public class TimeUtils { public static final int UNIT_YEAR=0; public static final int UNIT_DAY=1; public static final int UNIT_HOUR=2; public static final int UNIT_MINUTE=3; public static final int UNIT_SECOND=4; public static final int UNIT_MILLISECOND=5; public static final int UNIT_MONTH=6; public static TimeUnit2 getAboutTime(long ms){ TimeValue timeValue=new TimeValue(ms); int unit=UNIT_MILLISECOND; int value=0; int largest=timeValue.getLargestUnit(); switch(largest){ case UNIT_YEAR: unit=UNIT_YEAR; value=timeValue.getYear(); break; case UNIT_DAY: int day=timeValue.getDay(); if(day>=30){ unit=UNIT_MONTH; value=day/30; }else{ unit=UNIT_DAY; value=timeValue.getDay(); } break; case UNIT_HOUR: unit=UNIT_HOUR; value=timeValue.getHour(); break; case UNIT_MINUTE: unit=UNIT_MINUTE; value=timeValue.getMinute(); break; case UNIT_SECOND: unit=UNIT_SECOND; value=timeValue.getSecond(); break; case UNIT_MILLISECOND: value=timeValue.getMillisecond(); break; } return new TimeUnit2(unit,value); } public static class TimeUnit2{ public TimeUnit2(int unit2, int value2) { unit=unit2; value=value2; } private int unit; public int getUnit() { return unit; } public void setUnit(int unit) { this.unit = unit; } public int getValue() { return value; } public void setValue(int value) { this.value = value; } private int value; } public static class TimeValue{ public int getLargestUnit(){ if(year>0){ return UNIT_YEAR; } if(day>0){ return UNIT_DAY; } if(hour>0){ return UNIT_HOUR; } if(minute>0){ return UNIT_MINUTE; } if(second>0){ return UNIT_SECOND; } return UNIT_MILLISECOND; } private static final long hour_millisecond=(60*60*1000); private int millisecond; private int second; private int minute; private int hour; private int day; private int year; public TimeValue(long millisecond){ int minute_millisecond=60*1000; int second_millisecond=1000; int hour=(int)(millisecond/hour_millisecond); long remain=millisecond%hour_millisecond; int minute=(int)(remain/minute_millisecond); remain=remain%minute_millisecond; int second=(int)(remain/second_millisecond); remain=remain%second_millisecond; if(hour>=24){ int dv=hour/24; hour=hour%24; if(dv>=365){ int yv=dv/365; dv=dv%365; setYear(yv); } setDay(dv); } setHour(hour); setMinute(minute); setSecond(second); setMillisecond((int)remain); } public int getMillisecond() { return millisecond; } public void setMillisecond(int millisecond) { this.millisecond = millisecond; } public int getSecond() { return second; } public void setSecond(int second) { this.second = second; } public int getMinute() { return minute; } public void setMinute(int minute) { this.minute = minute; } public int getHour() { return hour; } public void setHour(int hour) { this.hour = hour; } public int getDay() { return day; } public void setDay(int day) { this.day = day; } public int getYear() { return year; } public void setYear(int year) { this.year = year; } public String toString(){ return year+" "+"."+day+" "+hour+":"+minute+":"+second+"."+millisecond; } public String toMinuteString(){ String m=String.valueOf(minute); if(m.length()<2){ m="0"+m; } String s=String.valueOf(second); if(s.length()<2){ s="0"+s; } String ms=String.valueOf(millisecond); while(ms.length()<4){ ms="0"+ms; } return m+":"+s+"."+ms; } public String toHourString(){ String h=String.valueOf(hour); if(h.length()<2){ h="0"+h; } String m=String.valueOf(minute); if(m.length()<2){ m="0"+m; } String s=String.valueOf(second); if(s.length()<2){ s="0"+s; } String ms=String.valueOf(millisecond); while(ms.length()<4){ ms="0"+ms; } return h+":"+toMinuteString(); } } }