Java2014.08.19 10:07




안드로이드 앱을 개발하다 보면 Listview 아이템들의 생성 일자별로 구분자를 넣어서 Today(오늘), Yesterday(어제), This week(이번 주), Last week(지난 주), This Month(이번 주),... 항목들을 계산할 필요가 있었습니다. 이러한 날자 계산은 생각보다 상당히 까다롭습니다.

그래서 찾은 라이브러리가 Joda(http://www.joda.org/joda-time/) 입니다. 시간과 날자 계산은 탁월한데 정확한 사용방법을 모르면...

Joda 라이브러리를 사용하여 간단한 샘플을 만들어 보았습니다.

 

package com.nalsil.JodaDate;

import org.joda.time.DateTime;
import org.joda.time.Days;
import org.joda.time.LocalDate;
import org.joda.time.Months;
import org.joda.time.Weeks;

public class JodaDateTime {

	public static void main(String[] args) {

		System.out.println(String.format("Now: %s", DateTime.now().toString()));

		for (int idxDay = 1; idxDay <= DateTime.now().dayOfMonth().withMinimumValue().minusDays(1).getDayOfMonth(); idxDay++) {
			displayMWD(DateTime.now().dayOfMonth().withMinimumValue().minusDays(1).getYear(), DateTime.now().dayOfMonth()
					.withMinimumValue().minusDays(1).getMonthOfYear(), idxDay);
		}

		for (int idxDay = 1; idxDay <= DateTime.now().getDayOfMonth(); idxDay++) {
			displayMWD(DateTime.now().dayOfMonth().withMinimumValue().minusDays(1).getYear(), DateTime.now().getMonthOfYear(), idxDay);
		}
	}

	private static void displayMWD(int year, int month, int day) {

		DateTime now = DateTime.now();
		DateTime start = new DateTime(year, month, day, 0, 0, 0);
		int nDays = Days.daysBetween(new LocalDate(start), new LocalDate(now)).getDays();
		int nWeeks = Weeks.weeksBetween(start.dayOfWeek().withMinimumValue().minusDays(1), now).getWeeks();
		int nMonths = Months.monthsBetween(start.dayOfMonth().withMinimumValue().minusDays(1), now).getMonths();
		System.out.println(String.format("%s : days=>%d, weeks=>%d, months=>%d", start.toString(), nDays, nWeeks, nMonths));
	}

}
신고




Posted by 금붕어70