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 仅提取日期和时间? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Flutter/Dart - 在输入表单中格式化日期

Flutter 自带日期组件

Flutter / Dart中Firestore流的随机/随机顺序?

如何从 Flutter(Dart) 中的另一个类调用方法?

如何从日期时间对象中仅提取月份和日期?

我们如何仅从 Oracle 中具有各种日期和字符串格式的列中提取日期?