如何在 IHP 中使用日期?有没有'default'的方法?

How to work with dates in IHP ? Is there any 'default' ways?

我正在尝试按照指南学习 IHP。我注意到,没有任何函数和其他东西可以处理日期。

例如:

我想在更新时将 post 的日期更改为 '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

这就是问题所在:我可以用这个 'set-statement' 做什么来实际更改日期?或者是否有任何 'already-specified' 功能可以做到这一点?

为了在 IHP 中处理日期和时间,我们使用 time package。 要获取当前时间,Data.Time.Clock 中有一个名为 getCurrentTime :: IO UTCTime.

的简单函数
Right post -> do
  currentTime <- getCurrentTime
  post <- post
    |> set #createdAt currentTime
    |> updateRecord
   ... ​

William Yao 有一个 excellent cheatsheet to the time package 如果您想更深入地研究这个主题,我强烈推荐它。我几乎总是有一个标签打开这个!

此外,在调用 set 时确保使用驼峰式命名法,IHP 会为您将其转换为 snake_case 数据库列:)