所以我想用颤音做秒表。
static void startTrip() {
SharedPrefsHelper().setIsCurrentlyOnTrip(true);
_elapsedTime = DateTime(
0, //year
0, //month
0, //day
0, //hour
0, //minute
0, //second
0, //millisecond
0, //microsecond
);
_timer = Timer.periodic(Duration(seconds: 1), (Timer timer) {
_elapsedTime.add(Duration(seconds: 1));
print('new time: $_elapsedTime');
_controller.sink.add(_elapsedTime); //same object/reference, but this is for the StreamBuilder to update
});
//TODO
}如您所见,我首先尝试使用DateTime对象来跟踪时间。
但是DateTime(0, 0, 0, 0, 0, 0, 0, 0)初始化为-0001-11-30 00:00:00.000。在我尝试添加1秒之后,这个值不会更新,它总是打印出相同的值。
运行以下代码,在达特帕德上试用自己:
DateTime elapsedTime = DateTime(0, 0, 0, 0, 0, 0, 0, 0);
print(elapsedTime);
elapsedTime.add(Duration(seconds: 1));
print(elapsedTime);有人知道为什么会这样吗?
现在,我将只使用一个int来记录时间,然后自己进行格式化。
如果有人想要密码的话,我就是这么做的:
int hours = elapsedTime ~/ 3600;
int minutes = (elapsedTime % 3600) ~/ 60; //get rid of all additional hours, then divide by 60
int seconds = elapsedTime % 60; //get rid of all additional minutes
String h = hours > 9 ? hours.toString() : '0$hours';
String m = minutes > 9 ? minutes.toString() : '0$minutes';
String s = seconds > 9 ? seconds.toString() : '0$seconds';发布于 2022-02-24 23:12:01
你可以试试这个:
DateTime elapsedTime = DateTime.utc(0);
print(elapsedTime);
elapsedTime = elapsedTime.add(Duration(seconds: 1));
print(elapsedTime);注意:日和月的最低值是1而不是0。
https://stackoverflow.com/questions/71259139
复制相似问题