说我有一个字符串
"1974-03-20 00:00:00.000"
Run Code Online (Sandbox Code Playgroud)
它是使用创建的DateTime.now(),如何将字符串转换回DateTime对象?
jam*_*lin 46
似乎有很多关于将时间戳字符串解析为DateTime. 我将尝试给出一个更笼统的答案,以便以后的问题可以指向这里。
您的时间戳采用 ISO 格式。 示例:1999-04-23、1999-04-23 13:45:56Z、19990423T134556.789。在这种情况下,您可以使用DateTime.parse或DateTime.tryParse。(参见该DateTime.parse文档的精确的设定的允许输入端。)
您的时间戳采用标准 HTTP 格式。示例:Fri, 23 Apr 1999 13:45:56 GMT、Friday, 23-Apr-99 13:45:56 GMT、Fri Apr 23 13:45:56 1999。在这种情况下,您可以使用dart:io的HttpDate.parse功能。
您的时间戳采用某种本地格式。 示例:23/4/1999、4/23/99、April 23, 1999。你可以使用package:intl的DateFormat类,并提供了一个模式,指定如何解析字符串:
import 'package:intl/intl.dart';
...
var dmyString = '23/4/1999';
var dateTime1 = DateFormat('d/M/yyyy').parse(dmyString);
var mdyString = '4/23/99';
var dateTime2 = DateFormat('M/d/yy').parse(mdyString);
var mdyFullString = 'April 23, 1999';
var dateTime3 = DateFormat('MMMM d, yyyy', 'en_US').parse(mdyFullString));
Run Code Online (Sandbox Code Playgroud)
请参阅该DateFormat文档有关模式语法的更多信息。
DateFormat 限制:
DateFormat无法解析缺少明确字段分隔符的日期。对于这种情况,您可以使用正则表达式(见下文)。package:intl,yy没有遵循文档描述的推断世纪的 -80/+20 规则,因此如果您使用 2 位数年份,则可能需要在之后调整世纪。DateFormat不支持时区。如果您需要处理时区,则需要分别处理它们。最后的手段:如果你的时间戳是固定的、已知的、数字格式,你总是可以使用正则表达式来手动解析它们:
var dmyString = '23/4/1999';
var re = RegExp(
r'^'
r'(?<day>[0-9]{1,2})'
r'/'
r'(?<month>[0-9]{1,2})'
r'/'
r'(?<year>[0-9]{4,})'
r'$',
);
var match = re.firstMatch(dmyString);
if (match == null) {
throw FormatException('Unrecognized date format');
}
var dateTime4 = DateTime(
int.parse(match.namedGroup('year')!),
int.parse(match.namedGroup('month')!),
int.parse(match.namedGroup('day')!),
);
Run Code Online (Sandbox Code Playgroud)
另一个例子见/sf/answers/4438208281/。
(为了完整性,我提到使用正则表达式。这种方法还有很多失败的地方,所以我不推荐它,除非没有其他选择。DateFormat通常应该足够了。)
Gün*_*uer 38
DateTime有一个parse方法
var parsedDate = DateTime.parse('1974-03-20 00:00:00.000');
Run Code Online (Sandbox Code Playgroud)
https://api.dartlang.org/stable/1.24.3/dart-core/DateTime/parse.html
小智 10
import 'package:intl/intl.dart';
DateTime brazilianDate = new DateFormat("dd/MM/yyyy").parse("11/11/2011");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14434 次 |
| 最近记录: |