如何将Luxon DateTime设置为当日起始时间(重置时间部分)
Luxon 重置DateTime时间部分到当日起始的内置方法
Luxon 原生提供了对应的能力,不需要手动操作原生Date对象实现,你可以直接使用实例上的startOf()方法。
- 传入
'day'作为参数时,就会直接返回当前DateTime实例对应日期的当日零点(起始时间),自动适配实例本身配置的时区,不会出现跨时区偏移问题。
简化后的实现代码
import { DateTime } from 'luxon'; // 获取当日零点 export const today = () => DateTime.now().startOf('day'); // 将任意DateTime重置为对应日期的起始时间 export const getDateOnly = (dt: DateTime = DateTime.now()) => dt.startOf('day');
补充说明:
startOf方法支持传入多个时间粒度参数,除了'day'之外,还支持'hour'、'week'、'month'、'year'等,调用后会返回对应时间粒度起始点的DateTime实例,覆盖绝大多数时间截断的使用场景。
你当前通过原生Date对象拼接年月日的写法存在潜在问题:如果Luxon实例配置了非本地时区,转成JS Date再重新构造DateTime的过程中,很容易因为时区基准不一致出现日期偏移,直接用内置startOf方法可以规避这个问题。
内容的提问来源于stack exchange,提问作者jenson-button-event
相关产品推荐
相关产品推荐

