[Flutter] DateTime 및 Duration

2022. 10. 22. 19:45프로그래밍 언어/Flutter

1.현재 시간 나타내는법 : DateTime.now()

(년 월 일 시 분 초 밀리초)

void main(){
 DateTime now = DateTime.now();
 print('----DateTime---'); 
 print(now);      // 2022-10-22 19:40:57.261
 print(now.year); // 2022
 print(now.month);//  10
 print(now.day);  // 22
 print(now.hour); // 19
 print(now.minute);// 40
 print(now.second);// 57
 print(now.millisecond);//261

2.기간 나타내는법 : Duration(기간);

 Duration duration =Duration(seconds: 60);
 
 print('----duration---');
 print(duration); //   0:01:00.000000
 print(duration.inDays); // 0
 print(duration.inHours);//0
 print(duration.inMinutes); // 1
 print(duration.inSeconds); // 60
 print(duration.inMilliseconds); // 60000

 DateTime specificDay = DateTime(
  2017,
  11,
  23,
 );
 
 print(specificDay); // 2017-11-23 00:00:00.000

 

3.시간 차이 나타내는법 now.difference( Datetime 객체 );

print('----difference---');
 final difference = now.difference(specificDay);
 print(difference); // 43075:40:57.261000
 print(difference.inDays); // 1794
 print(difference.inHours);//43075
 print(difference.inMinutes); // 2584540
 
}

4.날짜 연산 하는법 : add, substract( Duration 객체 )

 print(now.isAfter(specificDay)); // true
 print(now.isBefore(specificDay)); // false
 print('----연산---');
 print(now); 								// 2022-10-22 19:40:57.261
 print(now.add(Duration(hours:10))); 		// 2022-10-23 05:40:57.261
 print(now.subtract(Duration(seconds:20))); // 2022-10-22 19:40:37.261

 

5. DateTime으로 변환

parse 메소드 : String 형식의 날짜 -> DateTime

Parse는 ISO 8601 을 파싱할 수있다. 

아래와 같은 ISO 8601 포맷의 String 을 파싱할 수있다.

아래는 예시 코드 

void main(){
  String strDate1 = "2022-10-22T11:52:02+03:00";
  String strDate2 ="2012-02-27 13:27:00";
  
  DateTime specificDate1 = DateTime.parse(strDate1);
  print(strDate1);      // 2022-10-22T11:52:02+03:00
  print(specificDate1); // 2022-10-22 08:52:02.000Z
  
  DateTime specificDate2 = DateTime.parse(strDate2);
  print(strDate2);      // 2012-02-27 13:27:00
  print(specificDate2); // 2012-02-27 13:27:00.000
  
}

6. 다양하게 표현하는법 : DateFormat 

참고: DateFormat

import 'package:intl/intl.dart';
void main(){
  print(DateTime.now()); // 2022-10-23 20:40:48.869
  print(DateFormat.yMMMd().format(DateTime.now())); // Oct 23, 2022
  
}

 

출처:

1. 인프런_플러터프로젝트

2. https://api.dart.dev/stable/2.18.3/dart-core/DateTime-class.html