【问题标题】:How to convert date and time only at time?如何仅在时间转换日期和时间?
【发布时间】:2021-09-05 16:29:38
【问题描述】:

我通过 API 获得有关时间和日期的此类数据 2021-09-05T18:16:47.790601+02:00 我如何才能从这里获得仅几个小时?

【问题讨论】:

  • 你可以像这样使用hour getter:int hoursOnly = myDateTime.hour;
  • @AdnanAlshami 感谢您的回答。如何将此数据从 String 转换为 DateTime?
  • 您可以使用DateTime.parse("2021-09-05T18:16:47.790601+02:00"); 将字符串转换为日期。

标签: flutter dart


【解决方案1】:

您从 API 中获取格式化的日期并且只想获取小时。

首先,您最好从 API 获取 UNIX 日期(如果有),其时间戳格式如下:https://www.unixtimestamp.com

你的第一个问题会更多:

如何从原始日期获取时间戳以获取小时

如何解析字符串得到小时。

这里是格式化方法:

对你有帮助的日期时间:https://api.flutter.dev/flutter/dart-core/DateTime-class.html

这里是一个例子:

final DateTime myDate = DateTime.parse('2021-09-05 18:16:47');
final int hour = myDate.hour;
final int minute = myDate.minute;
final int second = myDate.second;
print('hour: $hour');
print('minute: $minute');
print('second: $second');

结果:

hour: 18
minute: 16
second: 47

这里是解析方法:

应该对你有帮助的子字符串:enter link description here

RegExp 应该对你有帮助:enter link description here

这里是一个例子:

const String myDate = '2021-09-05T18:16:47.790601+02:00';
final String hour = myDate.substring(11, 13);
final String minute = myDate.substring(14, 16);
final String second = myDate.substring(17, 19);
final String date = RegExp(r"[0-9]{2}:[0-9]{2}:[0-9]{2}").stringMatch(myDate).toString();
final List<String> splitDate = date.split(':');
print('hour: $hour');
print('minute: $minute');
print('second: $second');
print('date: $date');
print('split date: $splitDate');

结果:

hour: 18
minute: 16
second: 47
date: 18:16:47
split date: [18, 16, 47]

【讨论】:

  • 非常感谢。我弄清楚了 Unix 是什么。而他所做的一切都是在他的帮助下完成的。
【解决方案2】:

对于 ISO8601 字符串,您可以使用 DateTime 进行转换

  DateTime dt = DateTime.parse('2020-01-02 03:04:05');

然后您可以使用dt访问您想要的内容

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-05
    • 1970-01-01
    • 2014-07-06
    相关资源
    最近更新 更多