You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中如何给millisecondsSinceEpoch时间戳增加24小时?

问题描述

需要为日历中选中日期对应的毫秒级时间戳(millisecondsSinceEpoch)增加24小时。但直接添加24小时会得到当天的00:00时间,于是尝试添加23小时59分59秒,但这种方式是错误的。恳请提供解决方案。

原代码

DateTime initialTime = selectedDate.value;
DateTime finalTime = selectedDate.value.add(new Duration(hours: 23,minutes: 59,seconds: 59));

int finalTimeInEpoch = finalTime.millisecondsSinceEpoch;
print('This is the initial time for selected day --> $initialTime and This is the final time for selected day --> $finalTime');
int initialTimeForApi = initialTime.millisecondsSinceEpoch;
int finalTimeForApi= finalTimeInEpoch;
print('This is the initial time for selected day --> ${initialTime.millisecondsSinceEpoch} and This is the final time for selected day --> $finalTimeInEpoch in millisecondsSinceEpoch');

解决方案

核心思路

如果你的需求是获取选中日期当天结束时刻的时间戳(而非单纯给当前时间加24小时),正确的做法是先计算选中日期的次日零点,再减去1毫秒,这样能精准覆盖当天最后一毫秒的时间,避免遗漏毫秒部分的时间范围。

修正后的代码

// 先获取选中日期的当天起始时刻(午夜零点)
DateTime startOfDay = DateTime(selectedDate.value.year, selectedDate.value.month, selectedDate.value.day);
// 计算次日零点,再减去1毫秒得到当天的最后一刻
DateTime endOfDay = startOfDay.add(Duration(days: 1)).subtract(Duration(milliseconds: 1));

int initialTimeForApi = startOfDay.millisecondsSinceEpoch;
int finalTimeForApi = endOfDay.millisecondsSinceEpoch;

print('当天起始时间戳: $initialTimeForApi');
print('当天结束时间戳: $finalTimeForApi');

说明

  • 直接添加24小时得到次日零点的原因:如果selectedDate.value本身就是当天的午夜零点,添加24小时自然会得到次日零点。
  • 避免使用23小时59分59秒的原因:这种方式会忽略毫秒部分,导致当天最后999毫秒的时间未被包含在范围内,可能造成数据查询或逻辑判断的遗漏。

内容的提问来源于stack exchange,提问作者Ashu Upadhyay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 10:40:35