Flutter/Dart 仅提取日期和时间? [复制]
Posted
技术标签:
【中文标题】Flutter/Dart 仅提取日期和时间? [复制]【英文标题】:Flutter/Dart Extract just the Date and Time? [duplicate] 【发布时间】:2021-10-15 15:27:09 【问题描述】:如何在 Dart/Flutter 中重新格式化、转换或仅从该字符串中提取日期和时间?该字符串来自我的 mysql 数据库中的默认时间戳;
2021-08-11T11:38:09.000Z
所以我需要的是这样的东西;
2021-08-11 11:38
我在想也许是这样的;
final String? shortime = timestamp?.replaceAll(RegExp(''), '') ?? '';
但我不确定将什么用作正则表达式。
【问题讨论】:
【参考方案1】:您可以使用此代码:
DateTime x = DateTime.parse("2021-08-11T11:38:09.000Z");
然后创建一个函数来检查输入的数字:
String checkNum(int x)
return x<10?"0$x":x.toString();
现在您可以按如下方式使用此功能:
print(checkNum(x.year));
print(checkNum(x.month)); // and so on...
如果您有任何相关问题,请告诉我。 这是一个例子: .
【讨论】:
您尝试了解决方案吗?没有考虑到日期和时间要补0到数字总是两位数。 我会更新我的答案,谢谢。 我实际上使用了您的第一个答案。编辑过的给出了这个错误;无法从函数“checkNum”返回“Object”类型的值,因为它的返回类型为“String?”。 @Meggy 我再次编辑了我的答案(只是错过了 toString 前面的 () !)。现在您可以访问您想要的每个参数,例如(x.hour、x.minute 等),并且 checkNum 函数检查返回的字符串总是有两位数,例如它返回“01”而不是“1”跨度> @Meggy 成功了吗?【参考方案2】:由于DateTime.parse
支持提供的时间戳,您可以执行以下操作:
void main()
final dateTime = DateTime.parse('2021-08-11T11:38:09.000Z');
print(convertDateTimeToString(dateTime)); // 2021-08-11 11:38
String convertDateTimeToString(DateTime dt) => '$dt.year-'
'$dt.month.toString().padLeft(2, '0')-'
'$dt.day.toString().padLeft(2, '0') '
'$dt.hour.toString().padLeft(2, '0'):'
'$dt.minute.toString().padLeft(2, '0')';
或者,您可以使用像 intl
这样的包,它支持使用格式化模式格式化 DateTime
:
import 'package:intl/intl.dart';
void main()
final dateTime = DateTime.parse('2021-08-11T11:38:09.000Z');
final format = DateFormat('yyyy-MM-dd HH:mm');
print(format.format(dateTime)); // 2021-08-11 11:38
【讨论】:
以上是关于Flutter/Dart 仅提取日期和时间? [复制]的主要内容,如果未能解决你的问题,请参考以下文章