Commons IOの中に,探してみればあった, DateUtils.
決して悪くはないが,JodaTimeがある以上無理して使うまでもないだろう..とは思うが,とりあえず私たちのツールボックスの内に加えておいて損はない,ということでご紹介.
とりあえず便利
DateUtilsのJavaDocはこちらのとおり.
とりあえず加減算可能なset シリーズ ( setDays(), setYears() etc. ), 面倒なCalendarのインスタンスを省略できるtoCalendar(), 指定したフィールド以下を0にセットするtruncate()あたりが一番役立つと考えられる.iterator()もカレンダーアプリ関連で役立つかもしれない.
サンプルコード
import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Iterator; import org.apache.commons.lang3.time.DateUtils; import static org.junit.Assert.*; import org.junit.Before; import org.junit.Test; import static org.hamcrest.CoreMatchers.*; public class DateUtilTest { private Date date; @Before public void init() { Calendar cal = Calendar.getInstance(); cal.set( Calendar.YEAR, 1980 ); cal.set( Calendar.MONTH, 0 ); cal.set( Calendar.DAY_OF_MONTH, 2 ); cal.set( Calendar.HOUR_OF_DAY, 5 ); cal.set( Calendar.MINUTE, 20 ); cal.set( Calendar.SECOND, 30 ); cal.set( Calendar.MILLISECOND, 790 ); date = cal.getTime(); } @Test public void testAddAndSubtract() { Calendar cal = Calendar.getInstance(); cal.setTime( DateUtils.addDays( date, 4 ) ); assertThat( cal.get( Calendar.DAY_OF_MONTH ), is( 6 ) ); cal = Calendar.getInstance(); cal.setTime( DateUtils.addHours( date, 5 ) ); assertThat( cal.get( Calendar.HOUR_OF_DAY ), is( 10 ) ); cal = DateUtils.toCalendar( DateUtils.addMilliseconds( date, 25 ) ); assertThat( cal.get( Calendar.MILLISECOND ), is( 815 ) ); // subtract cal = DateUtils.toCalendar( DateUtils.addYears( date, -10 ) ); assertThat( cal.get( Calendar.YEAR ), is( 1970 ) ); // truncate assertThat( DateUtils.truncate( date, Calendar.DAY_OF_MONTH ).toString(), is( "Wed Jan 02 00:00:00 EST 1980" ) ); } @Test public void testIterator() { Iterator<Calendar> iter = DateUtils.iterator( date, DateUtils.RANGE_MONTH_SUNDAY ); int i = 0; SimpleDateFormat sdf = new SimpleDateFormat( "yyyy/MM/dd" ); while( iter.hasNext() ) { if( ++i == 10 ) break; System.out.print( sdf.format(iter.next().getTime()) + " "); } } }
0 件のコメント:
コメントを投稿