Javaμ Calendar ν΄λμ€λ₯Ό μ¬μ©ν΄ κ°λ¨ν λ¬λ ₯ νλ‘κ·Έλ¨μ λ§λλ λ°©λ²μ μ΄ν΄λ³΄κ² λ€
ν΄λΉ μ λ¬λ ₯ μΆλ ₯
2024 10
λ κ³Ό μμ μ λ ₯νλ©΄ ν΄λΉ μμ μΆλ ₯ν΄μ£Όλ νλ‘κ·Έλ¨μ΄λ€.
package chapter10;
import java.util.Calendar;
public class CalendarEx6 {
public static void main(String args[]) {
if (args.length != 2) {
return;
}
int year = Integer.parseInt(args[0]);
int month = Integer.parseInt(args[1]);
int START_DAY_OF_WEEK = 0;
int END_DAY = 0;
Calendar sDay = Calendar.getInstance();
Calendar eDay = Calendar.getInstance();
sDay.set(year, month - 1, 1);
eDay.set(year, month, 1);
eDay.add(Calendar.DATE, -1);
START_DAY_OF_WEEK = sDay.get(Calendar.DAY_OF_WEEK);
END_DAY = eDay.get(Calendar.DATE);
System.out.println(" " + args[0] + "Y " + args[1] + "M");
System.out.println(" SU MO TU WE TH FR SA");
for (int i = 0; i < START_DAY_OF_WEEK; i++) {
System.out.print(" ");
}
for (int i = 1, n = START_DAY_OF_WEEK; i <= END_DAY; i++, n++) {
System.out.print((i < 10) ? " " + i : " " + i);
if (n % 7 == 0) {
System.out.println();
}
}
}
}
μμΈ
Calendar sDay = Calendar.getInstance();
Calendar eDay = Calendar.getInstance();
Calendar.getInstance()λ μμ€ν μ νμ¬ λ μ§μ μκ°μ κΈ°μ€μΌλ‘ Calendar κ°μ²΄λ₯Ό μμ±νλ€.
sDayλ ν΄λΉ λ¬μ 첫 λ²μ§Έ λ μ§λ₯Ό λνλ΄κ³ , eDayλ ν΄λΉ λ¬μ λ§μ§λ§ λ μ§λ₯Ό λνλΈλ€.
sDay.set(year, month - 1, 1);
eDay.set(year, month, 1);
eDay.add(Calendar.DATE, -1);
sDay.set(year, month - 1, 1);λ μ£Όμ΄μ§ λ λμ μμ 첫 λ²μ§Έ λ μ μ€μ νλ€. μμ 0λΆν° μμνλ―λ‘, μ€μ λ‘ μ λ¬λ μμμ 1μ λΉΌμΌ νλ€.
2024λ 10μμ μκ³ μΆλ€λ©΄ sDay.set(2024, 9, 1)λ‘ ν΄μΌνκ³ , 2024λ 10μ 1μΌλ‘ μ€μ λλ κ²μ΄λ€.
eDay.set(year, month, 1);λ ν΄λΉ μμ 첫 λ²μ§Έ λ μ μ€μ νκ³ , κ·Έ λ€μλ λ‘ μ΄λμμΌ λ§μ§λ§ λ μ κ³μ°νλ€.
eDay.set(2024, 10, 1) 2024λ 11μ 1μΌλ‘ μ€μ λλ κ²
eDay.add(Calendar.DATE, -1);λ eDayλ₯Ό ν λ¬ λ€λ‘ μ΄λμν¨ ν, ν루λ₯Ό λΉΌμ ν΄λΉ λ¬μ λ§μ§λ§ λ μ§λ₯Ό μ»λλ€.
eDayμ 1μΌμ λΉΌλ μ½λμ΄λ€
μ¦, 2024λ 11μ 1μΌμμ 1μ λΉΌλ©΄ 2024λ 10μ 31μΌμ΄ λλ€
κ·Έλμ eDayλ 2024λ 10μ 31μΌλ‘ μ€μ λλ κ²μ΄λ€.
START_DAY_OF_WEEK = sDay.get(Calendar.DAY_OF_WEEK);
END_DAY = eDay.get(Calendar.DATE);
sDay.get(Calendar.DAY_OF_WEEK)λ ν΄λΉ λ¬μ 첫 λ²μ§Έ λ μ΄ μ£Όμ λͺ λ²μ§Έ λ μΈμ§λ₯Ό λ°ννλ€
μλ₯Ό λ€μ΄, μΌμμΌμ΄λ©΄ 1, μμμΌμ΄λ©΄ 2μ κ°μ΄ λ°νλλ€.
eDay.get(Calendar.DATE)λ ν΄λΉ λ¬μ λ§μ§λ§ λ μ§λ₯Ό λ°ννλ€.
ν΄λΉ λ¬μ ν¬ν¨ν μ£Ό λ¨μ λ¬λ ₯ μΆλ ₯
2024 11
λ κ³Ό μμ μ λ ₯νλ©΄ ν΄λΉ μλΏλ§ μλλΌ ν μ£Όλ₯Ό κ½ μ±μ΄ μΊλ¦°λλ₯Ό 보μ¬μ€λ€.
package chapter10;
import java.util.Calendar;
public class CalendarEx7 {
public static void main(String[] args) {
if (args.length != 2) {
return;
}
int year = Integer.parseInt(args[0]);
int month = Integer.parseInt(args[1]);
Calendar sDay = Calendar.getInstance();
Calendar eDay = Calendar.getInstance();
sDay.set(year, month - 1, 1);
// eDay.set(year, month, 1);
eDay.set(year, month - 1, sDay.getActualMaximum(Calendar.DATE));
sDay.add(Calendar.DATE, -sDay.get(Calendar.DAY_OF_WEEK) + 1);
eDay.add(Calendar.DATE, 7 - eDay.get(Calendar.DAY_OF_WEEK));
System.out.println(" " + args[0] + "Y " + args[1] + "M");
System.out.println(" SU MO TU WE TH FR SA");
for (int n = 1; sDay.before(eDay) || sDay.equals(eDay); sDay.add(Calendar.DATE, 1)) {
int day = sDay.get(Calendar.DATE);
System.out.print((day < 10) ? " " + day : " " + day);
if (n++ % 7 == 0) {
System.out.println();
}
}
}
}
μμΈ
Calendar sDay = Calendar.getInstance();
Calendar eDay = Calendar.getInstance();
sDay.set(year, month - 1, 1);
eDay.set(year, month - 1, sDay.getActualMaximum(Calendar.DATE));
Calendar.getInstance()λ₯Ό μ¬μ©νμ¬ sDayμ eDayλΌλ λ κ°μ Calendar κ°μ²΄λ₯Ό μμ±νλ€.
- sDay: μμ λ μ§λ₯Ό λνλ΄λ κ°μ²΄
- eDay: λ λ μ§λ₯Ό λνλ΄λ κ°μ²΄.
sDay.set(year, month - 1, 1);λ ν΄λΉ μμ 첫 λ²μ§Έ λ μ§λ₯Ό μ€μ νλ€.
month - 1μ μμ΄ 0λΆν° μμνκΈ° λλ¬Έμ 1μμ 0μΌλ‘ μ€μ ν΄μΌ νλ€.
2024λ 11μμ΄ μκ³ μΆλ€λ©΄ sDay.set(2024, 10, 1)λ‘ μ€μ ν΄μΌ νλ€
eDay.set(year, month - 1, sDay.getActualMaximum(Calendar.DATE));λ ν΄λΉ μμ λ§μ§λ§ λ μ μ€μ νλ€. getActualMaximum(Calendar.DATE)λ ν΄λΉ μμμ μ΅λ λ μ§, μ¦ λ§μ§λ§ λ μ§λ₯Ό λ°ννλ€.
μμ eDay.set(year, month, 1) eDay.add(Calendar.DATE, -1)κ³Ό κ°μ κ²°κ³Όλ₯Ό λ°ννκ² λλ€
sDay.add(Calendar.DATE, -sDay.get(Calendar.DAY_OF_WEEK) + 1);
sDay.get(Calendar.DAY_OF_WEEK)λ 첫 λ²μ§Έ λ (μ: 2024λ 11μ 1μΌ)μ΄ μ΄λ€ μμΌμΈμ§ λ°ννλ€.
μ΄ κ°μ 1λΆν° 7κΉμ§μ κ°μΌλ‘, μΌμμΌμ 1, μμμΌμ 2μ κ°μ λ°©μμ΄λ€.
sDay.add(Calendar.DATE, -sDay.get(Calendar.DAY_OF_WEEK) + 1);λ μμ λ μ§λ₯Ό ν΄λΉ μ£Όμ μΌμμΌλ‘ λ³κ²½νλ μμ μ΄λ€. μλ₯Ό λ€μ΄, 첫 λ²μ§Έ λ μ΄ νμμΌμ΄λΌλ©΄, λ λ²μ§Έ λ λΆν° μΌμμΌκΉμ§μ λ μ§λ₯Ό μ΄λμν¨λ€.
β -sDay.get(Calendar.DAY_OF_WEEK) + 1 (νμ¬ λ μ§κ° μν μ£Όμ μΌμμΌ λ μ§λ₯Ό ꡬνλ λ°©λ²)
μλ₯Ό λ€μ΄ νμμΌμ 3μ΄λΌλ©΄ -3 + 1 = -2κ° λλ€
νμμΌμμ λ λ μ λΉΌλ©΄ μΌμμΌμΈλ°, μΌμμΌμ ν΄λΉνλ λ μ§λ‘ μ΄λνλ λ°©μμ΄λ€
eDay.add(Calendar.DATE, 7 - eDay.get(Calendar.DAY_OF_WEEK));
eDay.get(Calendar.DAY_OF_WEEK)λ λ§μ§λ§ λ μ§(μ: 2024λ 10μ 31μΌ)κ° μ΄λ€ μμΌμΈμ§λ₯Ό λ°νν©λλ€
eDay.add(Calendar.DATE, 7 - eDay.get(Calendar.DAY_OF_WEEK));λ λ§μ§λ§ λ μ§λ₯Ό ν΄λΉ μ£Όμ ν μμΌλ‘ λ³κ²½νλ μμ μ λλ€.
β 7 - eDay.get(Calendar.DAY_OF_WEEK)); ( νμ¬ λ μ§κ° μν μ£Όμ ν μμΌ λ μ§λ₯Ό ꡬνλ λ°©λ²)
μλ₯Ό λ€μ΄ eDay.get(Calendar.DAY_OF_WEEKκ° μμμΌμ΄λΌλ©΄, 7 - 4 = 3
3μΌ νμ μ 보κΉμ§ κ°μ Έμ addνλ κ²μ΄λ€ (ν μμΌκΉμ§)
for (int n = 1; sDay.before(eDay) || sDay.equals(eDay); sDay.add(Calendar.DATE, 1)) {
int day = sDay.get(Calendar.DATE);
System.out.print((day < 10) ? " " + day : " " + day);
if (n++ % 7 == 0) {
System.out.println();
}
}
sDay.before(eDay) || sDay.equals(eDay)
sDayκ° eDayλ³΄λ€ μμκ±°λ κ°μ λ μ§μΌ λκΉμ§ λ°λ³΅νλ€.
μ¦, μμ λ μ§λΆν° λ§μ§λ§ λ μ§κΉμ§ λ°λ³΅νλ€.
sDay.add(Calendar.DATE, 1) : sDayλ μ§λ₯Ό ν루 λνλ μμ μ΄λ€.
'πΉπππ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[JAVA] μλ°μ μ μ ν΄λμ€ κ°μ κ΄κ³, μμκ³Ό ν¬ν¨ λ° νλ‘κ·Έλλ° ν (1) | 2024.11.11 |
---|---|
[JAVA] μλ°μ μ μ ch7-1, 2 μμ (1) | 2024.11.10 |
JSP νμ΄μ§μ κΈ°λ³Έ: page λλ ν°λΈμ taglib μ μΈ λ°©λ² (0) | 2024.10.30 |
MyBatis λ°μ΄ν° μ½μ μ΅μ ν: List μ½μ μ μ±λ₯ ν₯μ λ°©λ² (Mapper) (0) | 2024.07.18 |
[Java] Serializable μ§λ ¬ν (1) | 2024.05.24 |