在dart中用实例将字符串转换成DateTime的多种方法| Flutter By Example

2,540 阅读2分钟

本教程展示了如何在dart和flutter中把日期和时间的字符串转换为DateTime 类对象。

如何在Dart中把String转换为DateTime

例如,一个String包含一个日期格式的字符串 -2022-05-20 00:00:00.000DateTime.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-dddd-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的多种方法。