그냥 깨달은 DateFormat
것은 시간대 필드를 신경 쓰지 않는 것입니다. 아래의 두 인쇄물은 모두 동시에 출력됩니다.
import 'package:intl/intl.dart';
void main() {
var formatter = DateFormat('EEE, dd MMM yyyy HH:mm:ss zzz');
print(formatter.parse('Tue, 9 Jun 2020 19:46:10 +0000'));
print(formatter.parse('Tue, 9 Jun 2020 19:46:10 +0200'));
}
슬프게도 DateTime.parse
ISO-8601 문자열 만 허용하므로 대신 사용할 수 없습니다 .
그렇다면 Dart에서 RFC 822 타임 스탬프를 올바르게 구문 분석하려면 어떻게해야합니까?
jamesdin의 의견에 따라 수동으로 수행하는 것 외에 다른 방법을 찾을 수 없었습니다. 끝났어 :
const MONTHS = {
'Jan': '01',
'Feb': '02',
'Mar': '03',
'Apr': '04',
'May': '05',
'Jun': '06',
'Jul': '07',
'Aug': '08',
'Sep': '09',
'Oct': '10',
'Nov': '11',
'Dec': '12',
};
DateTime parseRfc822(String input) {
var splits = input.split(' ');
var reformatted = splits[3] +
'-' +
MONTHS[splits[2]] +
'-' +
(splits[1].length == 1 ? '0' + splits[1] : splits[1]) +
' ' +
splits[4] +
' ' +
splits[5];
return DateTime.tryParse(reformatted);
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다