当前位置: 首页 > 知识库问答 >
问题:

格式化日期和时间的Dart功能

澹台阳秋
2023-03-14

您如何创建一个函数来将'11082020_150258'之类的内容转换为使用Dart的日期和时间,例如'11 August 2020''3:02 PM'

共有2个答案

岳正阳
2023-03-14

首先,您可以使用正则表达式来解析文本:

RegExp exp = new RegExp(r"\d{2}");

正则表达式 \d{2} 匹配字符串的每两位数字。然后,您可以创建一个列表来存储这组数字:

Iterable<Match> matches = exp.allMatches('11082020_150258');
var list = matches.map((m) => m.group(0)).toList();

获取字符串的日期部分:

String dateStr = list.sublist(0, 3).join('/') + list[3].toString();

获取字符串的时间部分:

String timeStr = list.sublist(4).join(':');

从字符串创建 DateTime 对象(使用来自 intl 包的 DateFormat

var parsedDate = DateFormat('dd/M/yyyy HH:mm:ss').parse(dateStr + ' ' + timeStr);

您可以使用此DateTime。如果您想以问题中提到的格式打印它(即2020年8月11日下午3:02):

DateFormat format = new DateFormat('d MMMM yyyy, HH:mm a', 'en_US');
print(format.format(parsedDate));

完整代码:

RegExp exp = new RegExp(r"\d{2}");
Iterable<Match> matches =
exp.allMatches('11082020_150258');
var list =
matches.map((m) => m.group(0)).toList();
String dateStr =
    list.sublist(0, 3).join('/') + list[3].toString();
String timeStr = list.sublist(4).join(':');
var parsedDate = DateFormat('dd/M/yyyy HH:mm:ss')
    .parse(dateStr + ' ' + timeStr);
DateFormat format =
new DateFormat('d MMMM yyyy, HH:mm a', 'en_US');
print(format.format(parsedDate));
经和洽
2023-03-14

您首先需要将字符串解析为DateTime对象。不幸的是,包中的DateFormat不支持在没有字段分隔符的情况下解析时间戳,因此需要手动解析。您可以使用正则表达式

var timestampString = '11082020_150258';
var re = RegExp(
  r'^'
  r'(?<day>\d{2})'
  r'(?<month>\d{2})'
  r'(?<year>\d{4})'
  r'_'
  r'(?<hour>\d{2})'
  r'(?<minute>\d{2})'
  r'(?<second>\d{2})'
  r'$',
);

var match = re.firstMatch(timestampString);
if (match == null) {
  throw FormatException('Unrecognized timestamp format');
}
var dateTime = DateTime(
  int.parse(match.namedGroup('year')),
  int.parse(match.namedGroup('month')),
  int.parse(match.namedGroup('day')),
  int.parse(match.namedGroup('hour')),
  int.parse(match.namedGroup('minute')),
  int.parse(match.namedGroup('second')),
);

一旦有了< code>DateTime对象,就可以使用< code>DateFormat对其进行格式化:

var dateString = DateFormat('d MMMM yyyy').format(dateTime);
var timeString = DateFormat('h:mm a').format(dateTime);

print(dateString); // Prints: 11 August 2020
print(timeString); // Prints: 3:02 PM
 类似资料:
  • 我有一个格式化的字符串日期 2020/04/16 (年/月/日) 我想把这个字符串解析成日期时间 显然不起作用,没有正确的日期格式。 有人知道把这个字符串解析成日期时间的最好方法是什么吗?

  • 主要内容:日期格式化符号,Python处理,Pandas处理当进行数据分析时,我们会遇到很多带有日期、时间格式的数据集,在处理这些数据集时,可能会遇到日期格式不统一的问题,此时就需要对日期时间做统一的格式化处理。比如“Wednesday, June 6, 2020”可以写成“6/6/20”,或者写成“06-06-2020。 日期格式化符号 在对时间进行格式化处理时,它们都有固定的表示格式,比如小时的格式化符号为 ,分钟简写为 ,秒简写为 。下表对常用的日期

  • 我有一个的实例,我想将其格式化为String。我该怎么做呢?我想把日期变成一个字符串,类似“2013-04-20”这样的东西。

  • 问题内容: 我有一个类似的日期/时间字符串,但我想将其转换为,我该怎么做? 我正在使用以下代码,但会引发异常。 问题答案: 您可以执行简单的字符串操作并创建js日期对象。请参见下面的函数,该函数接受// yyyy-mm-dd hh:mm:ss格式的日期

  • 我有一个以下格式的字符串: 我想利用这个时刻。js以这种格式获取它,用于显示。 我试着用这个方法, 哪些错误并表示没有称为“替换”的方法?我是不是走错了路? 我还应该提到,我正在使用一个预打包版本的矩。js,为Meteor打包。js 堆栈跟踪:

  • DateFormat类提供各种格式来一起格式化日期和时间。 将使用DateFormat.getDateTimeInstance()方法。 请参阅下面的示例。 在下面的示例中,我们将展示如何使用不同的格式来设置日期和时间的格式。 IOTester.java import java.text.DateFormat; import java.util.Date; public class I18NTes