์ค์ผ์ค์ ์ค์ ํ๊ณ ์ค์ผ์ค์ ๋ฑ๋กํ ๋, ๋งค์ผ/๋งค์ฃผ/๋งค์ ์ค ํ1์ ํด ๋ฑ๋ก์ด ๋์ด์๋ค๊ณ ํ ๋, ์กฐํํ์ ์ ๋ค์ ์๋์ด ์ผ๋ง๋ ๋จ์๋์ง๋ฅผ ๊ตฌํํ ์ฝ๋. ์ฐ๋๋ ๋ชจ๋ 2024๋ก ๊ฐ๋ค๊ณ ๊ฐ์ ํ๋ค.
๋ณ์ ์ ์ธ
String msg = "";
LocalDateTime now = LocalDateTime.now();
long differenceInMillis = Timestamp.valueOf(startT).getTime() - Timestamp.valueOf(now).getTime();
long days = (differenceInMillis / (24 * 60 * 60 * 1000L)) % 365;
long hours = (differenceInMillis / (60 * 60 * 1000L)) % 24;
long minutes = (differenceInMillis / (60 * 1000L)) % 60;
long seconds = (differenceInMillis / 1000) % 60;
differenceInMillis ์ ์๋ ์์์ผ๊ณผ ํ์ฌ ์๊ฐ์ ์ฐจ์ด๋ฅผ ๊ณ์ฐํด ๋ฃ์๋ค. ์ด๋, ํ์ฌ ์๊ฐ์ด ๋ ์์ผ ๊ฒฝ์ฐ ์์๋ฅผ ๋ฐํํ๋ค.
๋ฐํํ ๋ฐ๋ฆฌ์ด ๊ฐ์ ์ผ, ์, ๋ถ, ์ด๋ก ๊ณ์ฐํ๋ค.
๋งค์ผ
if (differenceInMillis < 0) {
if (minutes <= 0 || seconds <= 0) {
hours = 23 + ((differenceInMillis / (60 * 60 * 1000L)) % 24);
} else {
hours = 24 + ((differenceInMillis / (60 * 60 * 1000L)) % 24);
}
if (seconds <= 0) {
minutes = 59 + ((differenceInMillis / (60 * 1000L)) % 60);
} else {
minutes = 60 + ((differenceInMillis / (60 * 1000L)) % 60);
}
seconds = 60 + ((differenceInMillis / 1000) % 60);
}
msg = hours + "์๊ฐ " + minutes + "๋ถ " + seconds + "์ด ์ ์
๋๋ค.";
differenceInMillis ๊ฐ ์์๋ฅผ ๋ฐํํ์ ๊ฒฝ์ฐ ์ด๋ฏธ ์ค์ผ์ค์ด ์ง๋ฌ๊ธฐ ๋๋ฌธ์ ๋ค์ ์ค์ผ์ค ์๋์ ํ๋๋ก ์์ฑํ๋ค. (์์๋ฅผ ๋ฐํํ์ ๊ฒฝ์ฐ๋ ๊ทธ๋๋ก msg๋ฅผ ๋ฆฌํดํ๋ค.) ๋ํ, minutes ๋ seconds๊ฐ ์์์ผ ๊ฒฝ์ฐ ๊ธฐ์กด์ ์๊ฐ์์ 1์ ๋ ๋นผ์ฃผ๊ณ , ์๋ ๊ฒฝ์ฐ hours๋ฅผ ๋ฐํํ๋๋ก ์์ฑํ๋ค.
๋ํ, seconds๊ฐ ์์์ผ ๊ฒฝ์ฐ minutes์์ 1์ ๋ ๋นผ์ฃผ๊ณ , ์๋ ๊ฒฝ์ฐ minutes๋ฅผ ๋ฐํํ๋๋ก ์์ฑํ๋ค.
๋งค์ฃผ
if (differenceInMillis < 0) {
int diff = now.getDayOfYear() - startT.getDayOfYear();
diff = diff / 7;
differenceInMillis = Timestamp.valueOf(startT.plusWeeks(diff + 1)).getTime() - Timestamp.valueOf(now).getTime();
days = (differenceInMillis / (24 * 60 * 60 * 1000L)) % 365;
hours = (differenceInMillis / (60 * 60 * 1000L)) % 24;
minutes = (differenceInMillis / (60 * 1000L)) % 60;
seconds = (differenceInMillis / 1000) % 60;
}
msg = days + "์ผ " + hours + "์๊ฐ " + minutes + "๋ถ " + seconds + "์ด ์ ์
๋๋ค.";
differenceInMillis ๊ฐ ์์๋ฅผ ๋ฐํํ์ ๊ฒฝ์ฐ ์ด๋ฏธ ์ค์ผ์ค์ด ์ง๋ฌ๊ธฐ ๋๋ฌธ์ ์ง๊ธ์ผ๋ก๋ถํฐ ๋ค์ ์ฃผ์ ์ค์ผ์ค ์๋์ ํ๋๋ก ์์ฑํ๋ค. ๋ง์ฝ, ์๋์ 2024-05-10 12:00:00(๊ธ์์ผ)์ ๋ง์ถฐ๋จ์ ๊ฒฝ์ฐ์๋, ๋งค์ฃผ ์๋์ ๋ง์ถฐ๋์๊ธฐ ๋๋ฌธ์, ๋ค์ ์๋์ ํ์ฌ ์์ ( 2024-08-14 )์์ 2024-08-16 12:00:00(๊ธ์์ผ)์ ์ธ๋ฆด ๊ฒ์ด๋ค. ์ด๋, ํ์ฌ์ ์ค์ผ์ค์ ์ฃผ์ฐจ๋ฅผ ๊ตฌํ๊ณ ๊ธฐ์กด ์ค์ผ์ค ๋ ์ง์ ๊ทธ๋งํผ์ ๋ํ ํ์ ํ์ฌ ๋ ์ง์์ ์ฐจ์ด๋ฅผ ๊ตฌํด์ ์๊ฐ์ฐจ๋ฅผ ๊ตฌํ๋ค.
๋งค์
if (differenceInMillis < 0) {
int diff = now.getMonthValue() - startT.getMonthValue();
long diffMills = Timestamp.valueOf(now).getTime() - Timestamp.valueOf(startT.plusMonths(diff)).getTime();
if (diffMills > 0) {
differenceInMillis = Timestamp.valueOf(startT.plusMonths(diff + 1)).getTime() - Timestamp.valueOf(now).getTime();
} else {
differenceInMillis = Timestamp.valueOf(startT.plusMonths(diff)).getTime() - Timestamp.valueOf(now).getTime();
}
days = (differenceInMillis / (24 * 60 * 60 * 1000L)) % 365;
hours = (differenceInMillis / (60 * 60 * 1000L)) % 24;
minutes = (differenceInMillis / (60 * 1000L)) % 60;
seconds = (differenceInMillis / 1000) % 60;
}
msg = days + "์ผ " + hours + "์๊ฐ " + minutes + "๋ถ " + seconds + "์ด ์ ์
๋๋ค.";
differenceInMillis ๊ฐ ์์๋ฅผ ๋ฐํํ์ ๊ฒฝ์ฐ ์ด๋ฏธ ์ค์ผ์ค์ด ์ง๋ฌ๊ธฐ ๋๋ฌธ์ ์ง๊ธ์ผ๋ก๋ถํฐ ๋ค์ ๋ฌ์ ์ค์ผ์ค ์๋์ ํ๋๋ก ์์ฑํ๋ค. ๋ง์ฝ ๊ฐ์ ๋ฌ์ด๋ผ๊ณ ์น ๋(๋ค๋ฅธ ๋ฌ์์๋), ํ์ฌ์ ๋ ์ง๊ฐ ์ค์ผ์ค์ ๋ ์ง๋ณด๋ค ํฌ๋ค๋ฉด ์ค์ผ์ค ์๋์ ํ์ฌ์ ๋ค์ ๋ฌ๋ก ๋ง์ถ๋๋ก ๊ตฌํํ๊ณ , ๊ฐ์ ๋ฌ์ด๋ผ๊ณ ์น ๋ (๋ค๋ฅธ ๋ฌ์์๋) , ํ์ฌ์ ๋ ์ง๊ฐ ์ค์ผ์ค์ ๋ ์ง๋ณด๋ค ์๋ค๋ฉด ์ค์ผ์ค ์๋์ ํ์ฌ์ ๋ฌ๋ก ๋ง์ถ๋๋ก ๊ตฌํํ๋ค. ์๋ฅผ ๋ค์ด, ์ค์ผ์ค์ 2024-01-04 00:00:01์ ๋ง์ถฐ๋จ์ ๊ฒฝ์ฐ, ํ์ฌ ์์ ( 2024-08-14 )์์ ๋ณผ๋, ์๋์ 2024-09-04 00:00:01์ ์ธ๋ฆด ๊ฒ์ด๋ค.
์ ์ฒด์ฝ๋
//์๋ ํ์
public String getAlarm(){
String msg="";
LocalDateTime now = LocalDateTime.now();
long differenceInMillis = Timestamp.valueOf(startT).getTime() - Timestamp.valueOf(now).getTime();
long days = (differenceInMillis / (24 * 60 * 60 * 1000L)) % 365;
long hours = (differenceInMillis / (60 * 60 * 1000L)) % 24;
long minutes = (differenceInMillis / (60 * 1000L)) % 60;
long seconds = (differenceInMillis / 1000) % 60;
switch (repeat) {
case "๋งค์ผ":
if (differenceInMillis<0) {
if(minutes<=0||seconds<=0){
hours = 23 + ((differenceInMillis / (60 * 60 * 1000L)) % 24);
}else{
hours = 24 + ((differenceInMillis / (60 * 60 * 1000L)) % 24);
}
if(seconds<=0){
minutes = 59 + ((differenceInMillis / (60 * 1000L)) % 60);
}else{
minutes = 60 + ((differenceInMillis / (60 * 1000L)) % 60);
}
seconds = 60 + ((differenceInMillis / 1000) % 60);
}
msg = hours + "์๊ฐ " + minutes + "๋ถ " + seconds + "์ด ์ ์
๋๋ค.";
break;
case "๋งค์ฃผ":
if (differenceInMillis<0) {
int diff = now.getDayOfYear() - startT.getDayOfYear();
diff = diff / 7;
differenceInMillis = Timestamp.valueOf(startT.plusWeeks(diff + 1)).getTime() - Timestamp.valueOf(now).getTime();
days = (differenceInMillis / (24 * 60 * 60 * 1000L)) % 365;
hours = (differenceInMillis / (60 * 60 * 1000L)) % 24;
minutes = (differenceInMillis / (60 * 1000L)) % 60;
seconds = (differenceInMillis / 1000) % 60;
}
msg = days + "์ผ " + hours + "์๊ฐ " + minutes + "๋ถ " + seconds + "์ด ์ ์
๋๋ค.";
break;
case "๋งค์":
if (differenceInMillis<0) {
int diff = now.getMonthValue()-startT.getMonthValue();
long diffMills = Timestamp.valueOf(now).getTime() - Timestamp.valueOf(startT.plusMonths(diff)).getTime();
if(diffMills>0){
differenceInMillis = Timestamp.valueOf(startT.plusMonths(diff+1)).getTime() - Timestamp.valueOf(now).getTime();
}else{
differenceInMillis = Timestamp.valueOf(startT.plusMonths(diff)).getTime() - Timestamp.valueOf(now).getTime();
}
days = (differenceInMillis / (24 * 60 * 60 * 1000L)) % 365;
hours = (differenceInMillis / (60 * 60 * 1000L)) % 24;
minutes = (differenceInMillis / (60 * 1000L)) % 60;
seconds = (differenceInMillis / 1000) % 60;
}
msg = days + "์ผ " + hours + "์๊ฐ " + minutes + "๋ถ " + seconds + "์ด ์ ์
๋๋ค.";
break;
}
return msg;
}
'๐ Note' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Oracle] ๋งค์ถ ์กฐํ ์ฟผ๋ฆฌ ์์ฑํ๊ธฐ (0) | 2024.08.20 |
---|---|
[Tomcat] ํฐ์บฃ ํ์ผ ์ ๋ก๋ ๋ฐฉ์ (request, docbase) (0) | 2024.08.19 |
์ซ์๋ฅผ ํ๊ธ๋ก ๋ณํํ๋ java ์ฝ๋ ์์ฑํ๊ธฐ (0) | 2024.08.05 |
TREEํ ์กฐํ ํ๋ฉด ๋ง๋ค๊ธฐ (0) | 2024.08.05 |
Python ๋ฐ์ดํฐ์ ์ฒ๋ฆฌ (1) | 2024.04.29 |