문자열 날짜를 Timestamp 로 변환하는 방법

JavaBeginner
지금 연습하기

소개

문자열 날짜는 Java 의 SimpleDateFormat, Timestamp, 그리고 Date 클래스를 사용하여 타임스탬프로 변환될 수 있습니다. 이 랩에서는 날짜 문자열을 타임스탬프로 변환하는 두 가지 방법을 다룹니다.

parse() 메서드를 사용하여 문자열을 Date 로 변환

import java.text.SimpleDateFormat;
import java.sql.Timestamp;
import java.util.Date;

public class StringToTimestamp {
    public static void main(String[] args) throws Exception {
        // date in string format
        String stringDate = "2021-01-07 02:02:16.172";
        try {
            // creating date format
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
            // parsing string to date using parse() method
            Date parsedDate = dateFormat.parse(stringDate);
            // finally creating a timestamp
            Timestamp timestamp = new java.sql.Timestamp(parsedDate.getTime());
            System.out.println(timestamp);
        } catch(Exception e) {
            System.out.println(e);
        }
    }
}

이 프로그램을 실행하려면 터미널을 열고 ~/project/ 디렉토리로 이동하십시오.

valueOf() 메서드를 사용하여 문자열 날짜를 Timestamp 로 변환

이것은 java.sql.Timestamp 클래스의 valueOf() 메서드를 사용하여 날짜 문자열을 타임스탬프로 변환하는 또 다른 방법입니다. 이 방법은 간단하며 오버헤드 코딩을 할 필요가 없습니다.

import java.text.SimpleDateFormat;
import java.sql.Timestamp;
import java.util.Date;

public class StringToTimestamp {
    public static void main(String[] args) throws Exception {
        // date in string format
        String stringDate = "2021-01-07 02:02:16.172";
        try {
            // converting string date to timestamp using valueOf() method
            java.sql.Timestamp timestamp = java.sql.Timestamp.valueOf(stringDate);
            System.out.println(timestamp);
        } catch(Exception e) {
            System.out.println(e);
        }
    }
}

프로그램 컴파일 및 실행

터미널을 열고 ~/project/ 디렉토리로 이동합니다. 다음 명령을 사용하여 코드를 컴파일한 다음 실행합니다.

javac StringToTimestamp.java && java StringToTimestamp

잘못된 날짜 형식 처리

문자열 형식이 잘못된 경우 java.text.ParseException: Unparseable date: 예외 오류가 발생합니다. 이 오류를 처리하기 위해 오류 메시지를 표시하는 catch 블록을 추가할 수 있습니다.

import java.text.SimpleDateFormat;
import java.sql.Timestamp;
import java.util.Date;

public class StringToTimestamp {
    public static void main(String[] args) throws Exception {
        // date in string format
        String stringDate = "2021-01-07 02:02:16";
        try {
            // creating date format
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
            // parsing string to date using parse() method
            Date parsedDate = dateFormat.parse(stringDate);
            // finally creating a timestamp
            Timestamp timestamp = new java.sql.Timestamp(parsedDate.getTime());
            System.out.println(timestamp);
        } catch(Exception e) {
            System.out.println("Error: " + e.getMessage());
        }
    }
}

Epoch 시간 (Unix 시간) 을 Timestamp 로 변환

다음 코드를 사용하여 epoch 시간을 timestamp 로 변환합니다.

import java.sql.Timestamp;

public class StringToTimestamp {
    public static void main(String[] args) throws Exception {
        // epoch time
        long epochTime = 1609934536172L;
        try {
            // create Timestamp object
            Timestamp timestamp = new Timestamp(epochTime);
            System.out.println(timestamp);
        } catch(Exception e) {
            System.out.println("Error: " + e.getMessage());
        }
    }
}

Timestamp 를 문자열 (String) 로 변환

SimpleDateFormat을 사용하여 Timestamp 를 문자열 형식으로 변환합니다.

import java.text.SimpleDateFormat;
import java.sql.Timestamp;

public class StringToTimestamp {
    public static void main(String[] args) throws Exception {
        // timestamp
        Timestamp timestamp = new Timestamp(System.currentTimeMillis());

        try {
            // create SimpleDateFormat object
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
            // format Timestamp object
            String formattedDate = dateFormat.format(timestamp);
            // print formatted date
            System.out.println(formattedDate);
        } catch(Exception e) {
            System.out.println("Error: " + e.getMessage());
        }
    }
}

Calendar 클래스 사용 방법

SimpleDateFormat 대신 Calendar 클래스를 사용하여 문자열 날짜를 timestamp 로 변환할 수도 있습니다.

import java.util.Calendar;
import java.sql.Timestamp;

public class StringToTimestamp {
    public static void main(String[] args) throws Exception {
        // string date
        String stringDate = "2021-01-07 02:02:16.172";
        try {
            // create Calendar object
            Calendar calendar = Calendar.getInstance();
            // set calendar date with string date
            calendar.setTime(new java.text.SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS").parse(stringDate));
            // convert calendar to timestamp
            java.sql.Timestamp timestamp = new java.sql.Timestamp(calendar.getTimeInMillis());
            System.out.println(timestamp);
        } catch(Exception e) {
            System.out.println("Error: " + e.getMessage());
        }
    }
}

ZonedDateTime 클래스 사용법

ZonedDateTime 클래스를 사용하여 문자열 날짜를 timestamp 로 변환할 수도 있습니다.

import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.sql.Timestamp;

public class StringToTimestamp {
    public static void main(String[] args) throws Exception {
        // string date
        String stringDate = "2021-01-07 02:02:16.172";
        try {
            // create DateTimeFormatter object and specify the format of the string date
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
            // create ZonedDateTime object and parse the string date
            ZonedDateTime zonedDateTime = ZonedDateTime.parse(stringDate, formatter.withZone(ZoneId.systemDefault()));
            // convert ZonedDateTime to timestamp
            Timestamp timestamp = Timestamp.valueOf(zonedDateTime.toLocalDateTime());
            System.out.println(timestamp);
        } catch(Exception e) {
            System.out.println("Error: " + e.getMessage());
        }
    }
}

프로그램 실행 방법

터미널을 열고 ~/project/ 디렉토리로 이동합니다. 다음 명령을 사용하여 코드를 컴파일하고 실행합니다.

javac StringToTimestamp.java && java StringToTimestamp

요약

이 랩에서는 SimpleDateFormat, Timestamp, Date, Calendar, 그리고 ZonedDateTime 클래스를 포함한 다양한 방법을 사용하여 Java 에서 문자열 날짜를 Timestamp 로 변환하는 방법을 배웠습니다. SimpleDateFormatTimestamp 방법은 구현하기 가장 쉬운 반면, ZonedDateTime 방법은 가장 복잡하지만 가장 많은 유연성을 제공합니다.