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')!),
);
using Newtonsoft.Json.Converters;
public class DartDateTimeConverter : IsoDateTimeConverter
{
public DartDateTimeConverter()
{
DateTimeFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFK";
}
}
我是这样用的
[JsonConverter(converterType: typeof(DartDateTimeConverter))]
public DateTimeOffset CreatedOn { get; set; }
8条答案
按热度按时间eyh26e7m1#
DateTime
有一个parse
方法https://api.dartlang.org/stable/dart-core/DateTime/parse.html
z18hc3ub2#
关于将时间戳字符串解析为
DateTime
,似乎有很多问题,我将尝试给予一个更一般的答案,以便将来的问题可以直接在这里讨论。***您的时间戳采用ISO格式。**示例:
1999-04-23
、1999-04-23 13:45:56Z
、19990423T134556.789
。在这种情况下,可以使用DateTime.parse
或DateTime.tryParse
。(有关允许输入的精确设置,请参见theDateTime.parse
documentation。)***您的时间戳采用标准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
类并提供一个指定如何解析字符串的 pattern:有关模式语法的更多信息,请参见the
DateFormat
documentation。DateFormat
限制:DateFormat
cannot parse dates that lack explicit field separators。对于这种情况,您可以使用正则表达式(见下文)。package:intl
,yy
did not follow the -80/+20 rule的0.17.0版本之前,用于推断世纪,因此如果您使用两位数的年份,则可能需要在之后调整世纪。DateFormat
does not support time zones。如果您需要处理时区,you will need to handle them separately。***最后一招:**如果时间戳是固定的、已知的数字格式,则始终可以使用正则表达式手动解析它们:
请参见https://stackoverflow.com/a/63402975/了解另一个示例。
(我提到使用正则表达式是为了完整性。使用这种方法会有更多的失败点,所以除非别无选择,否则我不推荐使用它。
DateFormat
通常应该足够了。)ezykj2lf3#
cotxawn74#
您可以只使用:* * 一月一日**
对于任何额外的格式化,您可以使用"Intl"包。
55ooxyrt5#
jutyujz06#
可以使用Dart默认函数
DateTime.parse("string");
将字符串解析为DateTime对象qc6wkl3g7#
日期=日期.拆分('-');日期格式日期格式=日期格式(“yMMMd”);字符串格式=日期格式.format(日期时间(整数解析(日期[0]),整数解析(日期[1]),整数解析(日期[2])));返回格式}
kt06eoxx8#
我通过在C#服务器端创建以下属性来解决这个问题:
我是这样用的
精度在内部存储,但使用它的Dart应用程序会获得具有正确精度的
ISO8601
。高温加热