本教程展示了如何在dart和flutter中把日期和时间的字符串转换为DateTime 类对象。
如何在Dart中把String转换为DateTime
例如,一个String包含一个日期格式的字符串 -2022-05-20 00:00:00.000 。DateTime.parse() 方法使用格式化的字符串创建DateTime对象
DateTime parse(String formattedString)
formattedString 是一种ISO字符串格式。
下面是一个示例程序
void main() {
var strDate = '2022-05-20 00:00:00.000';
var date = DateTime.parse(strDate);
print(date);
print(date.runtimeType);
}
输出
2022-05-20 00:00:00.000
DateTime
如果formattedString是无效的格式,它会抛出FormatException: Invalid date format
void main() {
var strDate = '202224-0200:00:00.000';
try {
var date = DateTime.parse(strDate);
print(date);
print(date.runtimeType);
} on Exception catch (exception) {
print(exception);
}
}
输出
FormatException: Invalid date format
202224-0200:00:00.000
假设,如果你有一个DateTime字符串的额外格式为May 04, 2021, at 7:21:10 PM UTC+5 ,那么上述程序会抛出FormatException: Invalid date format 。
我们必须使用DateFormat 类的intl.dart 。
以下是语法
(new) DateFormat DateFormat([String? newPattern, String? locale])
newPattern: 日期和时间字段的正则表达式格式
import 'package:intl/intl.dart';
void main() {
var strDate = 'May 04, 2021 at 7:21:10 PM UTC+5';
try {
final dateFormat = DateFormat(r'''MMMM dd, yyyy 'at' hh:mm:ss a Z''');
final date = dateFormat.parse(strDate);
print(date);
print(date.runtimeType);
} on Exception catch (exception) {
print(exception);
}
}
输出
2021-05-04 19:21:10.000
DateTime
如何将字符串日期格式从yyyy-MM-dd改为dd-MM-yyyy?
这个例子将字符串的日期格式yyyy-MM-dd 到dd-MM-yyyy :
- 构建具有输出格式的DateFormat格式对象(
dd-MM-yyyy) - DateFormat.format()方法格式化DateTime对象,使用parse()方法将字符串转换为DateTime。
- 最后,一个具有新格式的字符串与日期一起被返回。 下面是一个例子。
import 'package:intl/intl.dart';
void main() {
var strDate = '2021-05-04';
try {
final dateFormat = DateFormat('dd-MM-yyyy');
final date = dateFormat.format(DateTime.parse(strDate));
print(date);
print(date.runtimeType);
} on Exception catch (exception) {
print(exception);
}
}
结论
总结一下:学习了如何通过实例将字符串日期格式转换成DateTime的多种方法。