[java] SnakeYAML을 사용한 YAML 파일의 날짜 및 시간 처리

일반적으로 YAML은 데이터를 구조화하여 저장하기에 효과적인 형식입니다. 그러나 YAML에서 날짜 및 시간을 처리하는 것은 약간의 번거로움을 초래할 수 있습니다. SnakeYAML을 사용하면 Java에서 YAML 파일의 날짜 및 시간을 쉽게 처리할 수 있습니다. 이 글에서는 SnakeYAML을 사용하여 YAML 파일에서 날짜 및 시간을 파싱하고 포맷하는 방법을 알아보겠습니다.

SnakeYAML 설치

먼저, SnakeYAML을 프로젝트에 추가해야 합니다. Maven을 사용하는 경우 pom.xml에 다음 의존성을 추가합니다:

<dependency>
    <groupId>org.yaml</groupId>
    <artifactId>snakeyaml</artifactId>
    <version>1.27</version>
</dependency>

Gradle을 사용하는 경우 build.gradle에 다음 종속성을 추가합니다:

dependencies {
    implementation 'org.yaml:snakeyaml:1.27'
}

YAML 파일 생성

먼저, 파싱할 YAML 파일을 생성해야 합니다. 아래와 같이 YAML 파일(data.yml)을 생성합니다:

date: !!timestamp 2021-01-01
time: !!timestamp '14:30:00'

위 YAML 파일에서는 datetime 필드에 각각 날짜와 시간 값을 저장하고 있습니다. !!timestamp 태그는 날짜 및 시간 값을 나타내는 YAML 타입입니다.

날짜 및 시간 파싱

이제 SnakeYAML을 사용하여 YAML 파일에서 날짜 및 시간 값을 파싱해보겠습니다. 아래 코드는 data.yml을 로드하고 datetime 필드의 값을 읽어옵니다:

import org.yaml.snakeyaml.Yaml;
import java.io.InputStream;
import java.util.Date;
import java.util.Map;

public class YAMLParser {
    public static void main(String[] args) {
        Yaml yaml = new Yaml();
        
        try (InputStream inputStream = YAMLParser.class.getClassLoader().getResourceAsStream("data.yml")) {
            Map<String, Object> data = yaml.load(inputStream);
            
            Date date = (Date) data.get("date");
            Date time = (Date) data.get("time");
            
            System.out.println("Date: " + date);
            System.out.println("Time: " + time);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

날짜 및 시간 포맷

SnakeYAML은 기본적으로 Java의 java.util.Date를 사용하여 날짜 및 시간 값을 표현합니다. 따라서 Date 객체를 원하는 형식으로 포맷팅해야 합니다. 아래 코드는 datetime 값을 원하는 형식(yyyy-MM-ddHH:mm:ss)으로 포맷팅하는 방법을 보여줍니다:

import org.yaml.snakeyaml.Yaml;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;

public class YAMLParser {
    public static void main(String[] args) {
        Yaml yaml = new Yaml();
        
        try (InputStream inputStream = YAMLParser.class.getClassLoader().getResourceAsStream("data.yml")) {
            Map<String, Object> data = yaml.load(inputStream);
            
            Date date = (Date) data.get("date");
            Date time = (Date) data.get("time");
            
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
            SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss");
            
            System.out.println("Date: " + dateFormat.format(date));
            System.out.println("Time: " + timeFormat.format(time));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

결론

SnakeYAML을 사용하면 Java에서 YAML 파일의 날짜 및 시간 값을 쉽게 처리할 수 있습니다. 위의 예제를 참고하여 SnakeYAML을 사용하여 YAML 파일에서 날짜 및 시간 값을 파싱하고 포맷팅하는 방법을 익히세요. SnakeYAML을 사용하여 YAML 파일의 다른 유형도 처리할 수 있으므로 YAML 파일을 다룰 때 SnakeYAML을 고려해보세요.

참고 자료