Flutter 在Dart中将分钟转换为年、月、日、小时、分钟

Flutter 在Dart中将分钟转换为年、月、日、小时、分钟,flutter,dart,Flutter,Dart,我得到了一个整数,时间很长,例如: int minutes = 1000000 我想把它转换成一个字符串,格式包括:年、月、日、小时和分钟 大概是这样的: (下面的字符串示例与1000000 min不对应,只是为了查看格式) 我一直在寻找是否可以用持续时间解决它,但它不允许数月或数年。我也尝试过比较日期时间,但我找不到合适的答案。一般来说,处理日期时间可能很困难。一个简单的解决方案是将持续时间添加到“零”DateTime,并使用DateTime.minute等获取值:例如 const分钟=10

我得到了一个整数,时间很长,例如:

int minutes = 1000000
我想把它转换成一个字符串,格式包括:年、月、日、小时和分钟

大概是这样的:

下面的字符串示例与1000000 min不对应,只是为了查看格式)


我一直在寻找是否可以用
持续时间
解决它,但它不允许数月或数年。我也尝试过比较日期时间,但我找不到合适的答案。

一般来说,处理日期时间可能很困难。一个简单的解决方案是将持续时间添加到“零”
DateTime
,并使用
DateTime.minute
等获取值:例如

const分钟=100000;
最终持续时间=持续时间(分钟:分钟);
最终零=日期时间();
最终日期时间=零。添加(持续时间);
//然后您可以使用:
dateTime.minute//将介于0和59之间
dateTime.hour//将介于0和23之间
小心,
日和
月从1开始,而不是从0开始

但是,这只是将
分钟
*60秒添加到
日期时间
,这可能是您想要的,也可能不是您想要的。例如,你应该考虑一年是否正好等于365天,或者你是否考虑闰年(或闰秒),你在哪个时区评价这个,等等? 如果您对“一年是12个月”、“一个月是30天”等定义感到满意,那么您可能更喜欢手动解决方案:

const timeInMinutes=1000000;
最终分钟数=时间分钟数%60;
最后小时=((timeInMinutes-minutes)/60)%24;
//等
或者,在pub.dev上查看
duration
包:
它似乎做了一些类似于您想要做的事情

唯一的方法是使用
持续时间
并在天-月和天-年之间手动转换。您想要的实际上是不可能的,因为月和年的大小取决于您开始计算的日期。这两种解决方案对我的案例都很有用。一个小细节,以防你想从你的答案中纠正它:日和月从1开始,而不是日和年。非常感谢。啊,是的,好地方:-)
String time = '3 years, 2 month, 21 days, 13 hours, and 45 minutes'