반응형
Flutter에서 DateFormat 클래스를 사용하려면 intl 패키지를 설치해줘야 한다.
intl | Dart package
Contains code to deal with internationalized/localized messages, date and number formatting and parsing, bi-directional text, and other internationalization issues.
pub.dev
DateFormat 이외에도 NumberFormat, BidiFormatter 클래스도 여기에 들어있다.
pubspec.yaml
dependencies:
intl: ^0.19.0
최신 버전으로 추가해 준다.
DateFormat은 DateTime 타입의 값을 원하는 포맷으로 변경 가능하다.
DateTime은 자바의 Date 클래스와 유사한 클래스라고 보면 된다.
string_utils.dart
문자열을 가지고 이것저것 할 함수들을 모아 둘 string_utils.dart 안에 DateFormat 함수를 만들었다.
import 'package:intl/intl.dart';
String formatDate(String dateString) {
DateTime dateTime = DateTime.parse(dateString);
String formattedDateString = DateFormat('yyyy.MM.dd').format(dateTime);
return formattedDateString;
}
받아온 dateString을 DateTime 타입으로 바꿔주고(파싱),
'yyyy.MM.dd' 포맷으로 변경한 문자열 값을 다시 반환한다.
Text('입사일 : ${formatDate(e.jncmpYmd)}'),
Text('생년월일 : ${formatDate(e.birthYmd)}'),
화면에 적용해 보면
다른 화면에서는 다른 포맷으로 쓰일 수 있으니까 메서드를 수정해 보자
import 'package:intl/intl.dart';
String formatDate(String dateString, String format) {
DateTime dateTime = DateTime.parse(dateString);
String formattedDateString = DateFormat(format).format(dateTime);
return formattedDateString;
}
Text(
'입사일 : ${formatDate(e.jncmpYmd, "yyyy/MM/dd")}'),
Text(
'생년월일 : ${formatDate(e.birthYmd, "yyyy/MM/dd")}'),
NumberFormat
intl 패키지로 사용할 수 있는 NumberFormat 클래스도 써보자.
가격 문자열에 3자리마다 , 콤마를 넣어주는 함수 formatPrice를 string_utils.dart에 만들었다.
import 'package:intl/intl.dart';
String formatPrice(int price) {
final formatter = NumberFormat("#,###", "ko_KR");
return formatter.format(price);
}
100000 숫자 데이터가 들어오면 100,000 문자열로 반환해 준다.
반응형