我有一个如下格式的日期:"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);
}