String 用于格式化日期和时间的Dart函数
如何使用Dart创建一个函数,将类似于String 用于格式化日期和时间的Dart函数,string,flutter,dart,String,Flutter,Dart,如何使用Dart创建一个函数,将类似于'11082020_150258'的内容转换为类似于'2020年8月11日'和'3:02 PM'的日期和时间?首先,可以使用正则表达式解析文本: RegExp exp = new RegExp(r"\d{2}"); 正则表达式\d{2}与字符串的每两位匹配。然后,您可以创建一个列表来存储这组数字: Iterable<Match> matches = exp.allMatches('11082020_150258'); var
'11082020_150258'
的内容转换为类似于'2020年8月11日'
和'3:02 PM'
的日期和时间?首先,可以使用正则表达式解析文本:
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
对象(使用DateFormat
from)
您可以使用此DateTime
。如果您想以问题中提到的格式打印(即2020年8月11日下午3:02):
完整代码:
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));
RegExp-exp=newregexp(r“\d{2}”);
可匹配=
exp.allMatches('11082020_150258');
变量表=
matches.map((m)=>m.group(0)).toList();
字符串dateStr=
list.sublist(0,3).join('/')+list[3].toString();
字符串timeStr=list.sublist(4.join(“:”);
var parsedDate=DateFormat('dd/M/yyyy HH:mm:ss')
.parse(dateStr+''+timeStr);
日期格式=
新的日期格式('d MMMM yyyy,HH:mm a','en_US');
打印(format.format(parsedDate));
首先需要将字符串解析为DateTime
对象。不幸的是,从package:intl
,您需要手动解析它。可以使用正则表达式:
var timestampString='11082020_150258';
var re=RegExp(
r'^'
r'(?\d{2})'
r'(?\d{2})'
r'(?\d{4})'
r''
r'(?\d{2})'
r'(?\d{2})'
r'(?\d{2})'
r‘$’,
);
var match=re.firstMatch(timestampString);
if(match==null){
抛出FormatException(“无法识别的时间戳格式”);
}
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')),
);
拥有DateTime
对象后,可以使用DateFormat
对其进行格式化:
var dateString=DateFormat('d MMMM yyyy')。格式(dateTime);
var timeString=DateFormat('h:mm a')。format(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));