날짜 관련된 것은 신경 안썼는데..
이게.. 들여다 본것 정리를 하는게 좋을것 같다.
날짜를 구할 때는 Calendar.YEAR, Calendar.MONTH 과 같은 매크로? 같은걸 써줘야 쉽게 날짜를 구할 수 있다.
아래 함수와 같이 Calendar.set()를 통하여 날짜를 생성할 수 있다.
public Date getFirstDayOfWeek(){
// 현재 날짜를 구한다 Calendar cal = Calendar.getInstance();
// cal.setTimeZone(TimeZone.getTimeZone("GMT")); int year = cal.get(Calendar.YEAR); int month = cal.get(Calendar.MONTH); // int days = cal.get(Calendar.DAY_OF_MONTH); // int days = cal.get(Calendar.DAY_OF_WEEK); // 요일 int days = cal.getFirstDayOfWeek();
// Calendar.set()를 통하여 원하는 날짜를 생성할 수 있다 cal.set(year, month, days);
Date date = cal.getTime();
return date;
} |
다음은 현재 주의 첫날 부터 며칠이 지났는지 확인하는 코드이다.
(참고, GMT나 기준 시간의 변경(예 : 매일 5시를 다음날로 정할 경우)이 있을 경우 추가 작업이 필요하다.)
public class MainActivity extends AppCompatActivity {
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
Calendar cal = Calendar.getInstance();
Date date1 = cal.getTime(); Date date2 = getFirstDayOfWeek();
// cal.getFirstDayOfWeek(); 는 숫자만 달랑 넘긴다. 그래서 날짜로 표현하려면 추가 작업이 필요해서 안쓰게 된다.
System.out.println("How many days were passed from the first day of week : " + getDifferenceDays(date2, date1)); }
public Date getFirstDayOfWeek(){
// 현재 날짜를 구한다 Calendar cal = Calendar.getInstance();
// cal.setTimeZone(TimeZone.getTimeZone("GMT")); int year = cal.get(Calendar.YEAR); int month = cal.get(Calendar.MONTH); // int days = cal.get(Calendar.DAY_OF_MONTH); // int days = cal.get(Calendar.DAY_OF_WEEK); // 요일 int days = cal.getFirstDayOfWeek();
// Calendar.set()를 통하여 원하는 날짜를 생성할 수 있다 cal.set(year, month, days);
Date date = cal.getTime();
return date; }
public long getDifferenceDays(Date d1, Date d2) { long diff = d2.getTime() - d1.getTime();
// or float days = (diff / (1000*60*60*24)); // 1 day = 1000 * 60 * 60 * 24 return TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS);
/* Since there have been some discussions regarding the correctness of this code: it does indeed take care of leap years. However, the TimeUnit.DAYS.convert function loses precision since milliseconds are converted to days (see the linked doc for more info). If this is a problem, diff can also be converted by hand:
float days = (diff / (1000*60*60*24)); */ } }
|
결과(1월 4일 기준) ; How many days were passed from the first day of week : 3 |
참고 : https://stackoverflow.com/questions/20165564/calculating-days-between-two-dates-with-java
https://developer.android.com/reference/java/util/Calendar.html