我是編程新手,我正在 Flutter 中嘗試以下代碼:
DateTime dt2 = DateTime.parse(strDateToCompare).toLocal();
strDateToCompare其中的值為2022 年 11 月 14 日
它給了我以下錯誤:
FormatException:日期格式無效 2022 年 11 月 14 日
我想我在這里犯了一些愚蠢的錯誤。可能是什么問題?提前致謝。
uj5u.com熱心網友回復:
嘗試這個
首先你必須了解格式的作業原理:見下面的代碼
import 'package:intl/intl.dart';
void main() {
final a = DateFormat('d MMM y').format(DateTime.now());
print(a); // 22 Nov 2022
DateTime temp = DateFormat('d MMM y').parse(a);
print(temp); //. 2022-11-22 00:00:00.000
/// now you can use that format:
DateTime dt2 = DateFormat('d MMM y').parse('14 Nov 2022').toLocal();
print(dt2); // 2022-11-14 00:00:00.000
}
很高興看到這不是公認的答案
uj5u.com熱心網友回復:
DateTime.parse()決議只能接受這樣的格式:
"2012-02-27"
"2012-02-27 13:27:00"
"2012-02-27 13:27:00.123456789z"
"2012-02-27 13:27:00,123456789z"
"20120227 13:27:00"
"20120227T132700"
"20120227"
" 20120227"
"2012-02-27T14Z"
"2012-02-27T14 00:00"
"-123450101 00:00:00 Z": in the year -12345.
"2002-02-27T14:00:00-0500"
完整檔案
因此,為了使用它,您需要將您14 Nov 2022的格式轉換為正確接受的格式,例如2022-11-14,這樣您就可以像這樣使用它:
DateTime dt2 = DateTime.parse(`2022-11-14`).toLocal(); //
您可以使用此輔助方法將 , 轉換14 Nov 2022為2022-11-14, 而無需使用外部包:
String properFormatForDate(String invalidFormat) {
int index= 1;
final monthsAbbr = Map.fromIterable(
[
"jan",
"feb",
"mar",
"apr",
"may",
"jun",
"jul",
"aug",
"sep",
"oct",
"nov",
"dec"
],
key: (e) => e,
value: (e) => index ,
);
final listSeparated = invalidFormat.split(" ").reversed.toList();
int monthInNumber = monthsAbbr[listSeparated[1].toLowerCase()]! ;
listSeparated[1] = monthInNumber.toString();
return listSeparated.join("-");
}
print(properFormatForDate("14 Nov 2022")); // 2022-11-14
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/537887.html
