如何在Dart/Flutter中从字符串格式格式化DateTime



我有一个如下格式的日期:"2021年5月31日星期一23:59:59 GMT+0000(协调世界时(";但需要将其转换为本地时区并将其解析为DateTime格式。我该怎么做?

在Flutter中处理日期和时间时,可以使用DateTime类。

要将utc时间转换为本地时间,您可以执行以下操作:

var myUTCTime = DateTime.utc(2021, DateTime.may, 31);
var localTime = myUTCTime.toLocal();

以下是声明时间的格式:

DateTime.utc(int year, [int month = 1, int day = 1, int hour = 0, int minute = 0, int second = 0, int millisecond = 0, int microsecond = 0])

请随意在dartpad中运行上面的代码,并使用print语句查看输出!

无法使用DateTime对象直接解析此字符串。相反,使用这个功能-

DateTime getLocalTimeStamp(String timeData) {
Map<String, int> months = {"January": 1, "February": 2, "March": 3, "April": 4, "May": 5, "June": 6, "July": 7, "August": 8, "September": 9, "October": 10, "November": 11, "December": 12};
List<String> splittedTime = timeData.split(" ").toList();
String monthString = months[splittedTime[1]].toString().length < 10
? "0"+months[splittedTime[1]].toString()
: months[splittedTime[1]].toString();
String cleanedDate = splittedTime[3]+"-"+monthString+"-"+splittedTime[2]+"T"+splittedTime[4];
DateTime parsedDate = DateTime.parse(cleanedDate);
return parsedDate;
}

类似这样的事情-

void main() {
DateTime res = getLocalTimeStamp("Mon May 31 2021 23:59:59 GMT+0000");
print(res.day);
}

最新更新