IMCAT.DEV
로그인 가입
Dart 중급 자료구조

Dart 날짜 및 시간 처리

Dart 날짜 및 시간 처리 — 중급

날짜 및 시간 처리

1. 도입 (왜 배워야 하는가)

Dart에서 날짜 및 시간 처리는 소프트웨어 개발에서 매우 중요한 부분입니다. 특히, 데이터베이스에서의 날짜 기록, 사용자 인터페이스에서의 시간 표시, 예약 시스템, 쇼핑몰의 장바구니 만료 시간 등 다양한 상황에서 날짜와 시간을 정확하게 처리하는 것이 필수적입니다. 만약 이 부분을 소홀히 한다면, 예를 들어 예약 시스템에서 사용자가 잘못된 날짜를 입력하거나, 장바구니가 만료되는 시간을 계산하지 못하면 사용자가 혼란을 겪고 서비스에 대한 신뢰를 잃게 됩니다.

2. 핵심 개념 설명

Dart에서는 날짜와 시간을 다루기 위해 DateTime 클래스를 사용합니다. 이 클래스는 날짜 및 시간을 표현하고 조작하는 다양한 메소드를 제공합니다.

관련 용어 정리

용어설명
DateTime날짜와 시간을 표현하는 클래스
UTC협정 세계시 (Universal Time Coordinated)
Local Time사용자의 현지 시간
Timestamp특정 시점을 나타내는 정수

실생활 비유로 설명하자면, 날짜와 시간은 우리의 일상생활에서 시간 관리와 일정 조율을 위해 필수적입니다. 마치 일정을 관리하기 위해 달력을 사용하는 것처럼, 프로그래밍에서도 날짜와 시간을 효율적으로 관리해야 합니다.

3. 기본 코드 예제

아래는 기본적인 DateTime 객체를 생성하고 현재 시간을 출력하는 간단한 코드입니다.

void main() {
  // 현재 날짜 및 시간 가져오기
  DateTime now = DateTime.now();
  
  // 현재 시간 출력
  print("현재 시간: $now");
}
실행 결과:
현재 시간: 2023-10-04 14:30:45.123456
  • DateTime.now() 메소드를 호출하여 현재 날짜와 시간을 가져옵니다.
  • print() 함수를 사용해 현재 시간을 출력합니다.
  • 4. 실전 활용 예제

    예제 1: 쇼핑몰에서 장바구니 만료 시간 계산

    쇼핑몰에서 장바구니에 있는 제품은 일정 시간이 지나면 만료되도록 설정할 수 있습니다.

    void main() {
      DateTime now = DateTime.now();
      DateTime expiryTime = now.add(Duration(hours: 2)); // 2시간 후 만료
      
      print("장바구니 만료 시간: $expiryTime");
    }
    실행 결과:
    장바구니 만료 시간: 2023-10-04 16:30:45.123456
  • 현재 시간을 가져와서 Duration 클래스를 사용하여 2시간 후의 시간을 계산합니다.
  • add() 메소드를 사용해 현재 시간에 2시간을 더합니다.
  • 예제 2: 특정 날짜 생성

    특정 날짜와 시간을 생성하는 방법입니다.

    void main() {
      DateTime specificDate = DateTime(2023, 10, 31, 18, 0); // 2023년 10월 31일 18시
      print("특정 날짜: $specificDate");
    }
    실행 결과:
    특정 날짜: 2023-10-31 18:00:00.000
  • DateTime 생성자를 사용하여 특정 날짜를 생성합니다.
  • 연도, 월, 일, 시간, 분을 인자로 전달하여 객체를 만듭니다.
  • 5. 흔한 실수와 주의사항

    실수 1: 시간대 설정 실패

    // 잘못된 코드
    DateTime wrongDate = DateTime.parse("2023-10-04T14:30:00");
    print("잘못된 시간대: $wrongDate");
  • 이 코드는 UTC 기준으로 해석되는데, 사용자가 현지 시간으로 이해할 수 있습니다.
  • 올바른 코드

    // 올바른 코드
    DateTime localDate = DateTime.parse("2023-10-04T14:30:00Z").toLocal();
    print("올바른 시간대: $localDate");
  • toLocal() 메소드를 사용하여 현지 시간으로 변환합니다.
  • 실수 2: 날짜 계산 시 부정확성

    // 잘못된 코드
    DateTime incorrectExpiry = DateTime.now().add(Duration(days: 30));
    print("부정확한 만료일: $incorrectExpiry");
  • 이 코드는 단순히 30일 후로 계산하지만, 월의 길이에 따라 달라질 수 있습니다.
  • 올바른 코드

    // 올바른 코드
    DateTime correctExpiry = DateTime(now.year, now.month + 1, 1).subtract(Duration(days: 1));
    print("정확한 만료일: $correctExpiry");
  • 특정 월의 마지막 날을 계산하여 정확한 만료일을 설정합니다.
  • 6. 정리

  • DateTime 클래스는 날짜 및 시간 처리를 위한 기본 클래스입니다.
  • Duration 클래스를 사용하여 시간 간격을 쉽게 계산할 수 있습니다.
  • 현지 시간과 UTC 시간의 차이를 이해하고 적절히 변환해야 합니다.
  • 날짜 계산 시 월과 연도의 변화를 고려해야 합니다.
  • 다음에 학습하면 좋은 주제:

  • Dart에서 시간대(TimeZone) 처리
  • 날짜와 시간 포맷팅 및 파싱
  • 타이머와 스케줄링 기능 구현