我想减去两个不同的时间,例如Flutter
String time1 = "07:00"; String time2 = "08:12"; String time3 = time2 - time1; //result will be 01:12
这只是一个示例数据解释我想要实现的目标。
bbuxkriu1#
请参阅下面的示例代码。它最后打印01:12。但正如下面的评论中所指出的,只有当time2大于或等于time1时,这才有效。输入数据:
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
玩得开心-但请记住更改方法的命名以更好地适应您的上下文。
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);
xpszyzbs3#
你应该使用Dart内置的DateTime类,特别是它的DateTime.parse。文件:https://api.dart.dev/stable/2.8.4/dart-core/DateTime/parse.html
DateTime
DateTime.parse
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
4条答案
按热度按时间bbuxkriu1#
请参阅下面的示例代码。它最后打印01:12。
但正如下面的评论中所指出的,只有当
time2
大于或等于time1
时,这才有效。输入数据:
需要定义的方法:
计算
打印结果
玩得开心-但请记住更改方法的命名以更好地适应您的上下文。
mzillmmw2#
Flutter |Dart提供了一种数据类型来处理日期:DateTime。所以不要使用String,而是使用DateTime:
如果你只需要时间部分,你可以使用intl包中的DateFormat格式化它。你需要如下导入它:
然后执行以下操作:
或者你可以直接格式化结果(time3):
xpszyzbs3#
你应该使用Dart内置的
DateTime
类,特别是它的DateTime.parse
。文件:https://api.dart.dev/stable/2.8.4/dart-core/DateTime/parse.html
4dbbbstv4#
尝试下面的代码获取两次之间的差值。