我正在尝试按照指南学习 IHP。我注意到,没有任何函数和其他东西可以处理日期。
例如:
我想在更新时将帖子的日期更改为“NOW()”
action UpdatePostAction { postId } = do
post <- fetch postId
post
|> buildPost
|> validateIsUnique #title
>>= ifValid \case
Left post -> render EditView { .. }
Right post -> do
post <- post
|> set #created_at '...' -- change '...' to something :)
|> updateRecord
let t = get #title post
setSuccessMessage $ "Post \'" <> t <> "\' updated"
redirectTo PostsAction
这就是问题所在:我可以用这个“设置语句”做什么来实际更改日期?或者是否有任何“已经指定”的功能可以做到这一点?
最佳答案
为了在 IHP 中处理日期和时间,我们使用 time
package .
要获取当前时间,Data.Time.Clock
中有一个名为 getCurrentTime::IO UTCTime
的简单函数。
Right post -> do
currentTime <- getCurrentTime
post <- post
|> set #createdAt currentTime
|> updateRecord
...
威廉姚有一个excellent cheatsheet to the time package如果您想更深入地研究该主题,我强烈建议您阅读。我几乎总是有一个标签打开这个!
此外,在调用 set
时确保使用驼峰式命名法,IHP 会为您将其转换为 snake_case 数据库列:)
关于haskell - 如何在 IHP 中处理日期?有没有 'default'的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69104732/