티스토리 뷰
목차
1. Format 클래스
2. java.time 패키지
Format 클래스
* 숫자와 날짜를 원하는 형식의 문자열로 변환
* 숫자형식 : DecimalFormat
* 날짜형식 : SimpleDateFormat
* 매개변수화 된 문자열 형식 : MessageFormat
숫자 형식 클래스 : DecimalFormat
* 숫자 데이터를 원하는 형식으로 표현하기 위해 사용
* 적용할 패턴을 선택해 생성자 매개값으로 지정한 후, 객체 생성
DecimalFormat df = new DecimalFormat("#,###.0");
String result = df.format(1234567.89);
날짜 형식 클래스 : SimpleDateFormat
* Date 클래스의 toString() 메소드는 영문으로 된 날짜만 리턴
* 특정 문자열 포맷으로 얻고 싶다면 SiimpleDateFormat 클래스를 이용
* 패턴에는 자릿수에 맞게 기호를 반복해서 작성할 수 있음(yyyy는 년도를 4자리까지 표시하라는 의미)
SimpleDateFormat sdf = new SimpleDateFormat("yyyy년 MM월 dd일");
String strDate = sdf.format(new Date());
매개변수화 된 문자열 형식 클래스 : MessageFormat
* 문자열에 데이터가 들어갈 자리를 표시해 두고, 프로그램이 실행하면서 동적으로 데이터를 삽입해 문자열을 완성시킬 수 있음
//값 나열
String text = "회원ID : {0} \n회원 이름: {1} \n회원 전화: {2}";
String result1 = MessageFormat.format(text, id, name, tel);
//배열 대입
String sql = "insert into member values( {0}, {1}, {2} )";
Object[] arguments = { "'java'", "'신용권'", "'010-123-5678'" };
String result2 = MessageFormat.format(sql, arguments);
java.time 패키지
* 자바 8부터 추가된 패키지
* 날짜와 시간을 나타내는 여러 가지 API가 새롭게 추가됨
* 날짜와 시간을 조작하거나 비교하는 기능이 추가됨
- Date와 Calendar는 날짜와 시간을 조작하거나 비교하는 기능이 불충분
날짜와 시간 객체 생성
* 날짜와 시간을 표현하는 5개의 클래스
LocalDate
* now() : 컴퓨터의 현재 날짜 정보를 저장한 객체를 리턴
* of() : 매개값으로 주어진 날짜 정보를 저장한 객체를 리턴
LocalDate currDate = LocalDate.now();
LocalDate targetDate = LocalDate.of(2023, 3, 3);
LocalTime
* now() : 컴퓨터의 현재 시간 정보를 저장한 객체를 리턴
* of() : 매개값으로 주어진 시간 정보를 저장한 객체를 리턴
LocalTime currTime = LocalTime.now();
LocalTime targetTime = LocalTime.of(6, 20, 0, 0);
LocalDateTime
* now() : 컴퓨터의 현재 날짜와 시간 정보를 저장한 객체를 리턴
* of() : 매개값으로 주어진 날짜와 시간 정보를 저장한 객체를 리턴
LocalDateTime currDateTime = LocalDateTime.now();
LocalDateTime targetDateTime = LocalDateTime.of(2023, 3, 3, 21, 40, 0);
ZonedDateTime
* 타임존의 날짜와 시간을 저장하는 클래스
* 존오프셋 : 협정세계시(그리니치천문대)와 차이 나는 시간(시차)를 말함
* 존아이디 : 타임존의 이름 [Asia/Seoul]
* ZonedDateTime은 now() 정적 메소드에 ZoneId를 매개값으로 주고 얻을 수 있음
* ZoneId는 of() 메소드로 얻을 수 있다 : 매개값은 존아이디를 넣으면 된다.
ZonedDateTime utcDateTime = ZonedDateTime.now(ZoneId.of("UTC"));
ZonedDateTime newyorkDateTime = ZonedDateTime.now(ZoneId.of("America/New_York"));
ZonedDateTime seoulDateTime = ZonedDateTime.now(ZoneId.of("Asia/Seoul"));
Instant
* 특정 시점의 타임스탬프로 사용됨 : 특정한 두 시점 간의 시간적 우선순위를 따질 때 사용
* java.util.Date와 유사하지만 Date는 로컬 컴퓨터의 현재 날짜와 시간을 기준으로 / Instance는 협정세계시를 기준으로
Instant instant1 = Instant.now();//instant라는 객체를 생성
Instant instant2 = Instant.now();//프로그램 멈춘 후에 2번 객체 동작
if(instant1.isBefore(instant2)) {System.out.println("instant1이 빠릅니다.");}
else if(instant1.isAfter(instant2)) {System.out.println("instant1이 늦습니다.");}
else {System.out.println("동일한 시간입니다.");}
System.out.println("차이(nanos): " + instant1.until(instant2, ChronoUnit.NANOS));
날짜와 시간에 대한 정보 얻기
* get이라는 메소드가 붙어있는 것들은 뒤에 오는 것들을 리턴해주는 메소드라고 생각하면 됨
* is 메소드는 true, false를 리턴해주는 것
* isLeapYear()는 toLocalDate()메소드로 LocalDate로 변환 후 사용
*ZonedDateTime에서 제공하는 추가 메소드
날짜와 시간을 조작하기
빼기와 더하기
- 빼기의 형태 : minus + 변수+ (long)
- 더하기의 형태 : plus + 변수 + (long)
변경하기
* 날짜와 시간을 변경하는 메소드
* with(TemporalAdjuster adjuster) : 현재 날짜를 기준으로 상대적 날짜를 리턴한다. 매개값은 다음표의 메소드를 호출하면 됨
LocalDateTime targetDateTime = now.with(TemporalAdjusters.firstDayOfYear());
날짜와 시간을 비교하기
* 날짜와 시간을 비교하거나 차이를 구하는 메소드
* Period : 년, 월, 일의 양을 나타내는 날짜 기준 클래스
* Duration : 시, 분, 초, 나노초의 양을 나타내는 시간 기준 클래스
* between()메소드의 차이점
- Period와 Duration의 between() : 년, 월, 일, 초의 단순 차이를 리턴
- ChronoUnit열거 타입의 between() : 전체 시간을 기준으로 차이를 리턴
파싱과 포매팅
* 파싱 : 주어진 문자열로 날짜와 시간을 생성
* 포맷팅 : 날짜와 시간을 형식화된 문자열로 변환
파싱(Parsing) 메소드
* 날짜와 시간 정보가 포함된 문자열을 파싱해서 날짜와 시간을 생성하는 두개의 parse() 정적 메소드
* 상황에 맞는 포맷 변환 같이 사용
* parse(CharSequence) 메소드는 기본적으로 ISO_LOCAL_DATE 포맷터를 사용해서 문자열을 파싱
LocalDate localDate = LocalDate.parse("2024-05-21");
* 다른 포맷터를 이용하고 싶다면 parse(CharSequence, DateTimeFormatter)를 사용
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy.MM.dd");
LocalDate localDate = LocalDate.parse("2024.05.21", formatter);
* DateTimeFormatter의 표준화된 포맷터들
LocalDate localDate = LocalDate.parse("2024-05-21", DateTimeFormatter.ISO_LOCAL_DATE);
포맷팅(Formatting) 메소드
* 날짜와 시간을 포맷팅된 문자열로 변환
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy년 M월 d일 a h시 m분");
String nowString = now.format(dateTimeFormatter);
'Language > JAVA' 카테고리의 다른 글
- Total
- Today
- Yesterday
- python
- Calendar 클래스
- 포장 클래스
- 순환할당
- 리스트
- 파이썬
- Random 클래스
- 기본 API 클래스
- Math 클래스
- 프로그램
- Pattern 클래스
- 함수
- IndexError
- Objects 클래스
- 리스트연산자
- Date 클래스
- 스레드 스케줄링
- StringBuilder 클래스
- Arrays 클래스
- 문자열함수
- 딕셔너리
- Format 클래스
- not_in
- StringBuffer 클래스
- 역반복문
- StringTokenizer 클래스
- 요소선택
- FALSE
- java.time.package
- 자료형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |