Flutter:为什么我不能创建一个全为 0 值的 DateTime 对象?
Flutter: why can't I create a DateTime object with all 0 values?
所以我想在 Flutter 中制作一个秒表。
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 秒后该值没有更新,它总是打印出相同的结果。
通过 运行 在 dartpad 上自己尝试一下,代码如下:
DateTime elapsedTime = DateTime(0, 0, 0, 0, 0, 0, 0, 0);
print(elapsedTime);
elapsedTime.add(Duration(seconds: 1));
print(elapsedTime);
有人知道为什么会这样吗?
现在我将只使用 int 来跟踪时间并自己进行格式化。
P.S 所以我就是这样做的,如果有人想要代码:
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';
你可以试试这个:
DateTime elapsedTime = DateTime.utc(0);
print(elapsedTime);
elapsedTime = elapsedTime.add(Duration(seconds: 1));
print(elapsedTime);
注意:日和月的最小值是 1 而不是 0。
所以我想在 Flutter 中制作一个秒表。
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 秒后该值没有更新,它总是打印出相同的结果。
通过 运行 在 dartpad 上自己尝试一下,代码如下:
DateTime elapsedTime = DateTime(0, 0, 0, 0, 0, 0, 0, 0);
print(elapsedTime);
elapsedTime.add(Duration(seconds: 1));
print(elapsedTime);
有人知道为什么会这样吗?
现在我将只使用 int 来跟踪时间并自己进行格式化。
P.S 所以我就是这样做的,如果有人想要代码:
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';
你可以试试这个:
DateTime elapsedTime = DateTime.utc(0);
print(elapsedTime);
elapsedTime = elapsedTime.add(Duration(seconds: 1));
print(elapsedTime);
注意:日和月的最小值是 1 而不是 0。