首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我不能创建一个包含所有0值的DateTime对象?

为什么我不能创建一个包含所有0值的DateTime对象?
EN

Stack Overflow用户
提问于 2022-02-24 22:49:04
回答 1查看 562关注 0票数 0

所以我想用颤音做秒表。

代码语言:javascript
复制
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秒之后,这个值不会更新,它总是打印出相同的值。

运行以下代码,在达特帕德上试用自己:

代码语言:javascript
复制
DateTime elapsedTime = DateTime(0, 0, 0, 0, 0, 0, 0, 0);
print(elapsedTime);
elapsedTime.add(Duration(seconds: 1));
print(elapsedTime);

有人知道为什么会这样吗?

现在,我将只使用一个int来记录时间,然后自己进行格式化。

如果有人想要密码的话,我就是这么做的:

代码语言:javascript
复制
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';
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-24 23:12:01

你可以试试这个:

代码语言:javascript
复制
DateTime elapsedTime = DateTime.utc(0);
print(elapsedTime);
elapsedTime = elapsedTime.add(Duration(seconds: 1));
print(elapsedTime);

注意:日和月的最低值是1而不是0。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71259139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档