*시간 계산하기
1. 시간은 String 형으로 저장되어 있어야 하며,
2. SimpleDateFormat의 parse를 통해 Date형으로 변환한다.
3. Calendar의 setTime을 통해 시간을 정하고 add를 통해 원하는 시간만큼 더하고 뺄 수 있다. ( 시, 분, 초, 밀리초)
4. SimpleDateFormat의 format을 통해 Date를 다시 원하는 모양의 String으로 변환한다.
package kakao;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
public class Main {
public static void main(String[] args) throws ParseException {
// TODO Auto-generated method stub
String time = "15:03:55.222"; // 1
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss.SSS"); //2
Date date = sdf.parse(time); //2
Calendar c = Calendar.getInstance(); //3
c.setTime(date); //3
c.add(Calendar.MILLISECOND, 1); //3
System.out.println(time);
System.out.println(sdf.format(c.getTime())); //4
System.out.println(date.getTime());
}
}
출력결과
15:03:55.222
15:03:55.223
21835222
sdf.parse(String source) , sdf.format(Date date)을 유의해서 확인한다. parse할 때는 String 형으로 넣어야 하며, format은 Date형을 넣어야 한다. 또한 각각 반환형은 Date와 String이다. 또한 Calendar의 getTime()은 반환형이 Date이며 Date의 getTime()은 반환형이 long이다. 이는 밀리세컨드로 시간을 계산한 것이다.
Calendar는 기본적으로 객체를 만들고 setTime()을 통해 Date를 주입 해 시간을 만들고 add로 계산한다.
함수 타입 | 함수, 매개변수명 | 반환 타입 | 출력문 |
SimpleDateFormat | sdf.parse(String source) | return Date | Thu Jan 01 15:03:55 KST 1970 |
SimpleDateFormat | sdf.format(Date date) | return String | 15:03:55.222 |
Date | date.getTime() | return long | 21835222 |
Calendar | c.getTime() | return Date | Thu Jan 01 15:03:55 KST 1970 |
*AM/PM to 24
package kakao;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
public class Main {
public static void main(String[] args) throws ParseException {
// TODO Auto-generated method stub
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss aa");
SimpleDateFormat sdf2 = new SimpleDateFormat("HH:mm:ss aa");
String time1 = "03:13:40 오전";
Date date1 = sdf.parse(time1);
System.out.println(sdf.format(date1));
System.out.println(sdf2.format(date1));
String time2 = "08:50:30 오후";
Date date2 = sdf.parse(time2);
System.out.println(sdf.format(date2));
System.out.println(sdf2.format(date2));
}
}
출력결과
03:13:40 오전
03:13:40 오전
08:50:30 오후
20:50:30 오후
hh && HH 의 차이이이다. hh는 12시간 기준이며 HH는 24시간 기준이다. 먼저 12시간 기준의 시간으로 parse를 하고 그 시간을 다시 24시간 기준으로 format하면 된다. 한국버젼이라 그런지 AM & PM은 오류가 뜨고 오전 & 오후가 정상 작동된다.
반응형
'학습 > Java' 카테고리의 다른 글
Java에서 static 사용하면 안되는 이유 (0) | 2021.01.25 |
---|---|
Front-End와 Back-End 연계하기 (0) | 2020.12.22 |
Map에서 Key, Value 다루기 (0) | 2020.11.02 |
실수 소수점 다루기 ( Math & String.format) (0) | 2020.10.22 |
JDK JRE JVM (0) | 2019.02.17 |