如何获取今日00:00时刻对应的millisecondsSinceEpoch时间戳
获取当日零点对应的毫秒时间戳实现方案
你需要的是从当前时间中提取日期部分,构造对应日期00:00:00的时间对象后再转时间戳,以下是不同场景的实现:
Dart/Flutter 场景(你示例中DateTime.now()的使用场景)
推荐写法
DateTime now = DateTime.now(); // 构造本地时区当日00:00:00的时间对象 DateTime localMidnight = DateTime(now.year, now.month, now.day); // 转毫秒时间戳 int localMidnightTs = localMidnight.millisecondsSinceEpoch; // 如果需要UTC时区的当日零点,改用以下写法 DateTime utcMidnight = DateTime.utc(now.year, now.month, now.day); int utcMidnightTs = utcMidnight.millisecondsSinceEpoch;
避坑提示
- 不要用
now.subtract()手动减去当前时分秒的方式计算零点,容易漏处理毫秒、微秒字段导致结果偏差,且代码冗余 - 注意区分本地时区和UTC时区的零点,二者对应的时间戳不同,需根据业务场景选择
示例验证:假设当前
DateTime.now()返回结果为2021-09-20 20:18:04,上述方法构造出的localMidnight就是2021-09-20 00:00:00,转换得到的时间戳完全符合需求。
JavaScript 场景
const now = new Date() // 构造本地时区当日零点 const localMidnight = new Date(now.getFullYear(), now.getMonth(), now.getDate()) const localMidnightTs = localMidnight.getTime()
内容的提问来源于stack exchange,提问作者Dedi
相关产品推荐
相关产品推荐

