Flutter/기본

[Flutter] DateTime 비교하기

주톨 2023. 7. 12. 17:36
728x90

 

 

1. isAfter, isBefore

void main() {
  final String date1 = "2023-07-24 17:04:32.897";
  final String date2 = "2023-07-27 17:04:32.897";
  
  final bool a = DateTime.parse(date2).isAfter(DateTime.parse(date1));
  final bool b = DateTime.parse(date1).isAfter(DateTime.parse(date2));
  print("date2가 data1보다 후의 날짜인가요? ${a}");
  print("data1이 data2보다 후의 날짜인가요? ${b}");
  
  final bool c = DateTime.parse(date2).isBefore(DateTime.parse(date1));
  final bool d = DateTime.parse(date1).isBefore(DateTime.parse(date2));
  print("date2가 data1보다 이전 날짜인가요? ${c}");
  print("data1이 data2보다 이전 날짜인가요? ${d}");
}


//출력

date2가 data1보다 후의 날짜인가요? true
data1이 data2보다 후의 날짜인가요? false

date2가 data1보다 이전 날짜인가요? false
data1이 data2보다 이전 날짜인가요? true

isAfter, isBefore는 DateTime클래스의 메서드입니다. 

 

isAfter  ~후의

isAfter는 왼쪽(비교날짜)이 오른쪽(비교대상날짜) 보다  후의 날짜이면 true를 반환하고 아니면 false를 반환합니다.
ex)
   2023-07-24.isAfter(2023-07-27)  => false 

   2023-07-27.isAfter(2023-07-24)  => true

 

 

isBefore ~이전의

isBefore는 왼쪽(비교날짜)이 오른쪽(비교대상날짜) 보다 이전의 날짜이면 true를 반환하고 아니면 false를 반환합니다.

ex)

   2023-07-24.isBefore(2023-07-27)  => true

   2023-07-27.isBefore(2023-07-24) => false

 

2. CompareTo 

void main() {
  final a = "2023-01-31T16:32:13.848";
  final b = DateTime.parse(a);
  final c = DateTime(b.year, b.month+1, b.day, b.hour, b.minute, b.second, b.millisecond,);
  
  final compareDate1 = DateTime.parse("2023-04-03T16:32:13.848");
  final compareDate2 = DateTime.parse("2023-03-01T16:32:13.848");
  final compareDate3 = DateTime.parse("2023-03-03T16:32:13.848");
  
  print("한달후 date : $c");
  print("비교 date가 크면 ${c.compareTo(compareDate1)}");
  print("비교 date가 작으면 ${c.compareTo(compareDate2)}");
  print("비교 date와 같으면 ${c.compareTo(compareDate3)}");
}



///출력
한달후 date : 2023-03-03 16:32:13.848
비교 date가 크면 -1
비교 date가 작으면 1
비교 date와 같으면 0

 

compareTo 기준으로
왼쪽이 오른쪽보다 작으면 -1,

왼쪽이 오른쪽보다 크면 1,
왼쪽이랑 오른쪽이랑 같으면 0 

을 리턴해줍니다.