我有一个TimePicker
组件,它以以下格式返回24小时时间:09:00
用于9AM或12:00
用于12 PM或20:00
用于8 PM。我的代码中需要Date
(JSDate),所以我想只使用当前日期/时间DateTime.now()
,但应用来自TimePicker
组件的小时和分钟,该组件具有onClick
事件。我可以这样处理该事件:
// TimePickerValue can either be a string or JSDate
// but the TimePicker is always returning a string
const handleTimeChange = (time:TimePickerValue) => {
// this outputs a time in 24-hour format
console.log("handleTimeChange: ", time)
// I want to set the state of the parent component
// this needs to be in JSDate format so this doesn't work
// setSomeValue(time)
// Because I don't care about date, I can just use "now()" and convert
// it to a JSDate but I want the hours and minutes of the value I'm setting
// to be the time in the string being sent to this function.
setSomeValue(DateTime.now().toJSDate())
}
Luxon能否解析类似“13:00”的内容,或者将其应用于现有的DateTime
,从而覆盖现有的hours
和minutes
?
2条答案
按热度按时间olmpazwi1#
Luxon能解析出“13:00”这样的词吗
是的you can just use the
fromISO
method to parse a time stringLuxon能否将其应用于现有的DateTime,以便写入现有的小时和分钟?
这可能有点难,我不知道在Luxon中是否有“内置”的方法来做到这一点。但是,如果你使用
fromISO
解析时间字符串,它会将日期部分设置为“今天”,所以你可以使用diff
来计算“一天中的时间”(作为Duration
),然后使用它来设置其他日期的时间:或者,如果你有时间的“部分”,你可以使用Luxon的
set
方法来覆盖这些单独的部分:ztmd8pv52#
我也遇到了同样的问题。我目前正在使用Strapi并使用其Datepicker组件。该组件返回JSDate。
console.log 中的内容:*
我们得到了想要的
简单回答:
可以在luxon的DateTime对象上使用
.set({ hour: 17, minute: 34 })
。.set({years: 2001,months: 5,days: 5,hours: 0,minutes: 0,seconds: 0,milliseconds: 0})
不要注意单词末尾的[s](小时/小时、天/天等-两种变体都适用)