Flutter/기본
[Flutter] 특수상황의 DateTime UTC -> UTC 변환
주톨
2024. 5. 9. 21:36
728x90
외부에서 UTC 시간을 받아와서 사용할 때 일반적으로 ISO8601 형식으로 주지만 때때로는
"2023-08-08T06:06:29" 이렇게 Z가 붙지 않거나 "2023-08-08 06:06:29" 이런식으로 받아오는 경우가 있습니다.
이런 시간을 toUtc()를 해서 Utc시간으로 바꾸게 된다면 사용 국가 표준시 만큼 추가로 계산됩니다.
예로 들어 한국은 UTC+9 한국 표준시를 가지고 있기 때문에 "2023-08-08T06:06:29" 해당 DateTime을 toUtc()하게 된다면 2023-08-07 21:06:29.000Z 이렇게 바뀌는 현상이 생깁니다.
받아온 UTC시간을 그대로 UTC로 변환하려면 아래 코드를 이용하면 됩니다.
Z가 붙으면 dart에서는 UTC시간으로 인식합니다.
DateTime parseUTCDateTime(String value) {
List<String> parts =
value.contains('T') ? value.split('T') : value.split(' ');
if (parts.length == 2) {
final timePart = parts[1];
if (timePart.endsWith('Z') ||
timePart.contains('+') ||
timePart.contains('-')) {
return DateTime.parse(value);
} else {
return DateTime.parse('${value}Z');
}
}
return DateTime.parse(value);
}