如何在Flutter中减去两个不同时间

w8ntj3qf  于 2023-04-22  发布在  Flutter
关注(0)|答案(4)|浏览(163)

我想减去两个不同的时间,例如Flutter

String time1 = "07:00";
String time2 = "08:12";

String time3 = time2 - time1;
//result will be 01:12

这只是一个示例数据解释我想要实现的目标。

bbuxkriu

bbuxkriu1#

请参阅下面的示例代码。它最后打印01:12。
但正如下面的评论中所指出的,只有当time2大于或等于time1时,这才有效。
输入数据:

String time1 = "07:00";
String time2 = "08:12";

需要定义的方法:

DateTime getTime(final String inputString) => DateFormat("hh:mm").parse(inputString);

String getString(final Duration duration) {
  String formatDigits(int n) => n.toString().padLeft(2, '0');
  final String minutes = formatDigits(duration.inMinutes.remainder(60));
  return "${formatDigits(duration.inHours)}:$minutes";
}

计算

final String difference = getString(getTime(time2).difference(getTime(time1)));

打印结果

print(difference); // 01:12

玩得开心-但请记住更改方法的命名以更好地适应您的上下文。

mzillmmw

mzillmmw2#

Flutter |Dart提供了一种数据类型来处理日期:DateTime。所以不要使用String,而是使用DateTime:

DateTime time1 = DateTime.parse(your_date_here your_time);
DateTime time2 = DateTime.parse(your_date_here your_time);
DateTime time3 = time2.difference(time1);

如果你只需要时间部分,你可以使用intl包中的DateFormat格式化它。你需要如下导入它:

import 'package:intl/intl.dart';

然后执行以下操作:

String formattedTime = DateFormat.Hms().format(time1);
String formattedTime = DateFormat.Hms().format(time2);

或者你可以直接格式化结果(time3):

String formattedTime = DateFormat.Hms().format(time3);
xpszyzbs

xpszyzbs3#

你应该使用Dart内置的DateTime类,特别是它的DateTime.parse
文件:https://api.dart.dev/stable/2.8.4/dart-core/DateTime/parse.html

4dbbbstv

4dbbbstv4#

尝试下面的代码获取两次之间的差值。

var timeFormat = DateFormat("HH:mm"); //Time format
    var first = timeFormat.parse("10:40");
    var second = timeFormat.parse("18:20");
    print("Difference -->${second.difference(first)}");
    // prints Difference -->7:40

相关问题