Joda DateTime Project 4/4
Joda DateTime Project
Interval
1/1000초 단위의 Instant 들 간의 시간 차이. 물론, TimeZone 기반입니다.Duration
TimeZone을 가지지 않는 시간의 길이 (1/1000)단위Interval로 부터 정보를 얻을 수 있다.
Period
TimeZone을 가지지 않는 시간의 길이 (1/1000)단위특정 필드로 표현된다.
필드 (Period, Years, Months, Weeks, Days, Hours, Minutes, Seconds)
사용예)
기본 생성
DateTime start = new DateTime(2004, 12, 25, 0, 0, 0, 0); DateTime end = new DateTime(2005, 1, 1, 0, 0, 0, 0); // duration in ms between two instants Duration dur = new Duration(start, end); // calc will be the same as end DateTime calc = start.plus(dur);
Periods를 사용하는 방법
/** Compare to Othe Time */
logger.info("\n\n ========== Expression of Intervals ===========");
DateTime aTime = new DateTime("2005-11-05");
DateTime bTime = new DateTime();
logger.info("aTime is {}", aTime); // return aTime is 2005-11-05T00:00:00.000+09:00
logger.info("bTime is {}", bTime); // return bTime is 2012-08-01T15:32:20.699+09:00
int dayIntervals = Days.daysBetween(aTime, bTime).getDays();
int weekIntervals = Weeks.weeksBetween(aTime, bTime).getWeeks();
int monthIntervals = Months.monthsBetween(aTime, bTime).getMonths();
logger.info("day Intervals is {}", dayIntervals); // return day Intervals is 2461
logger.info("week Intervals is {}", weekIntervals); // return week Intervals is 351
logger.info("month Intervals is {}", monthIntervals); // return month Intervals is 80
Interval interval = new Interval(aTime, bTime);
logger.info("duration {}, period {} from Instance" ,interval.toDuration().getStandardDays(),
interval.toPeriod(PeriodType.days()).getDays() );
// return duration 2461, period 2461 from Instance
서로다른 TimeZone의 경우는?
/** Expression of Zone */
logger.info("\n\n ========== Expression of Zone ===========");
DateTime minTimeOfDay = dt.hourOfDay().withMinimumValue()
.minuteOfDay().withMinimumValue()
.secondOfDay().withMinimumValue()
.millisOfDay().withMinimumValue();
logger.info("Min Time Of Day is {}", minTimeOfDay);
// return Min Time Of Day is 2012-08-01T00:00:00.000+09:00
DateTimeZone dtz = DateTimeZone.forID("Europe/London");
minTimeOfDay.toDateTime(dtz);
DateTime minTimeOfDayInNewWork = minTimeOfDay.toDateTime(dtz);
logger.info("Min Time Of Day in Europe/London Zone is {}", minTimeOfDayInNewWork);
// return Min Time Of Day in Europe/London Zone is 2012-07-31T16:00:00.000+01:00
dtz = DateTimeZone.forID("Asia/Taipei");
minTimeOfDay.toDateTime(dtz);
DateTime minTimeOfDayInTaiPei = minTimeOfDay.toDateTime(dtz);
logger.info("Min Time Of Day in Asia/Taipei Zone is {}", minTimeOfDayInTaiPei);
// return Min Time Of Day in Asia/Taipei Zone is 2012-07-31T23:00:00.000+08:00
logger.info("Diffences In Another timezone {}", Days.daysBetween(minTimeOfDayInNewWork, minTimeOfDayInTaiPei).getDays() ); // return 0;
Referred from http://joda-time.sourceforge.net 버젼 2.1
댓글
댓글 쓰기