在《哈姆雷特》中使用 UTCTime

2023-12-08

我在我的第一个网站上使用 Yesod,并且有一个新闻列表:

NewsItem
    date    UTCTime default=CURRENT_TIME
    title   String
    content String
    author  String

在我的处理程序中检索到:

newsitems <- runDB $ selectList [] [Desc NewsItemDate]

最终在我的模板中使用:

$if null newsitems
    <p>No news.
$else
    $forall Entity id entry <- newsitems
        <article>
            <h4>#{newsItemDate entry}
            <p>#{newsItemContent entry}

但我收到有关数据类型的错误:

Handler/Home.hs:20:11:
    No instance for (Text.Blaze.ToMarkup
                       time-1.4:Data.Time.Clock.UTC.UTCTime)
      arising from a use of `toHtml'
    Possible fix:
      add an instance declaration for
      (Text.Blaze.ToMarkup time-1.4:Data.Time.Clock.UTC.UTCTime)
    In the first argument of `toWidget', namely
      `toHtml (newsItemDate entry_a6ev)'
    In a stmt of a 'do' block:
      toWidget (toHtml (newsItemDate entry_a6ev))
    In the expression:
      do { toWidget
             ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
                "<article><h4>");
           toWidget (toHtml (newsItemDate entry_a6ev));
           toWidget
             ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
                "</h4>\
                \<p>");
           toWidget (toHtml (newsItemContent entry_a6ev));
           .... }

所以我想我会继续添加到我的 Import.hs 中:

import Data.Time (UTCTime)
import Data.Time.Format (formatTime)
import Text.Blaze (ToMarkup, toMarkup)
import Text.Blaze.Internal (string)
import System.Locale (defaultTimeLocale)

-- format date as     26 July 2012
instance ToMarkup UTCTime where
   toMarkup a = string (formatTime defaultTimeLocale "%e %B %Y" a)

它确实可以编译,但在浏览器中运行时给我一个错误:

Internal Server Error
PersistMarshalError "Expected UTCTime, received PersistText \"2012-08-30\""

所以我不确定如何解决这个问题,有什么想法吗?

编辑:该网站的源代码,以防需要或好奇:https://github.com/iaefai/socrsite


在不调查实际错误的情况下,我认为您的方法并不好。您最终很可能需要多种格式化方法UTCTime毕竟,类型是用来存储时间的,而不仅仅是日期。通过给予ToMarkup UTCTime例如,您可以全局修复此问题。

我建议编写函数renderAsDate :: UTCDate -> HTML, renderAsTime :: UTCDate -> HTML等并在您的模板中使用它们,例如#{renderAsDate (newsItemDate entry)}.

但这并不能解决运行时错误,该错误来自序列化层,并且可能独立于您的模板。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在《哈姆雷特》中使用 UTCTime 的相关文章

随机推荐

  • OpenGL 打包正常

    我试图理解使用之间的区别GL INT 2 10 10 10 REV对于我的数据的正常情况 V S GLbyte 目前我正在将法线加载到glm vec4我这样包装它 int32 t floatToSignedNormalizedByte fl
  • 如何更改视频播放速度

    我想知道是否可以在 iPhone 应用程序中更改视频播放速度 我们希望用户对着麦克风大喊以加快播放速度并结束 您必须使用 setCurrent PlaybackRate
  • 在 Facebook 或 Twitter 授权后存储和检索用户收到的令牌

    您好 我目前正在尝试编写一个 MVC5 应用程序 该应用程序能够在通过 facebook 或 twitter 授权后存储用户收到的令牌 我想将其存储在数据库中而不是 cookie 中 并在用户将来的任何 API 请求和登录尝试中使用它 这样
  • 如何找到可见MKMapView可见屏幕区域的半径?

    我想知道iPhone屏幕中可见区域的半径 因为我会缩小和放大可见区域会发生变化 所以我想知道该特定区域的半径 我该怎么做 它不是所需的半径 您需要使用mapView 中的region 参数 查一下苹果文档 里面说的很清楚了 完成本教程 它会
  • 如何限制 Android Google 自动完成 API 仅获取火车站

    尽管有很多关于如何将 API 限制为特定国家 地区的答案 但找不到任何有关将其限制为火车站的信息 请帮我解决这个问题 谢谢 我认为目前 API 不支持此功能 我可以在 Places API Web 服务中看到启用此功能的功能请求 https
  • 在 numpy 数组中查找相同的行和列

    我有一个 nxn 元素的布尔数组 我想检查是否有任何行与另一行相同 如果有任何相同的行 我想检查相应的列是否也相同 这是一个例子 A np array 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 1 1 0 1 0
  • 三元运算符比 Java 中的“if”条件更快吗?

    这个问题在这里已经有答案了 我很容易出现 如果条件综合症 这意味着我倾向于一直使用 if 条件 我很少使用三元运算符 例如 I like to do this int a if i 0 a 10 else a 5 When I could
  • 无法通过 Google Apps 脚本中的 YouTube 数据 API 从云端硬盘上传:空响应

    我正在尝试将文件列表从 Google 云端硬盘导入到 YouTube 元数据和文件的 URL 位于 Google 电子表格中 因此我使用 Google Apps 脚本编写了一些代码 该代码执行以下操作 获取选定的行 检索标题 描述 Goog
  • 使用 pyparsing 匹配非空行

    我正在尝试制作一个使用的小应用程序pyparsing从另一个程序生成的文件中提取数据 这些文件具有以下格式 SOME KEYWORD line 1 line 2 line 3 line 4 ANOTHER KEYWORD line a li
  • 如何在javascript中迭代链表

    有人分享了这种从数组创建链接列表的美丽而优雅的方法 function removeKFromList l k let list l reduceRight value next gt next value null console log
  • Microsoft Graph:当前经过身份验证的上下文对此请求无效

    我有一个使用 MSAL 和 v2 0 端点来登录用户并获取令牌的应用程序 我最近将其更改为 ADAL 和正常的 AAD 端点 也更改了应用程序 现在当我尝试使用 GraphService 时 出现以下错误 Current authentic
  • 重新缩放矢量 R

    假设我有一个整数向量 例如 gt x 1 1 1 1 4 4 13 13 14 我正在 R 中寻找一种有效的方法 将向量重新调整为整数 1 到元素的唯一数量的最大值 因此得到的向量将是 1 1 1 2 2 3 3 4 似乎是一个简单的问题
  • CSS3 动画中 Firefox 的背景图像

    我正在用 CSS 制作关键帧动画 由于支持 webkit 语法 动画似乎在 Chrome 中运行得很好 webkit keyframes title toggle from background image url images title
  • 如果字段值的数量限制为 4,则通过每个字段具有不同字段名称的文字对象传递泛型类型参数

    我在做什么 我想将对象逐个字段映射到某种通用类型的对象 我有 4 个运行时案例 运行时检查并在不匹配时抛出异常 我将它们用作原始对象的属性 false转变为Smth
  • 在学习网络开发时 我遇到了一个问题 这是我的代码 p text1 p div class primary text div text2 由于某种原因浏览器会转换 p to p p text p
  • 自引用结构声明

    以下声明有效 struct node int a struct node next 然而 当我们定义以下内容时 它会给出错误 error field next has incomplete type 为什么会这样呢 struct node
  • 如何获取给定年份一个月中每个星期一的日期

    我想获取一个月中每个星期一的日期 我以前在每个第一个星期一都这样做 而且很有效 date strtotime second monday of month i year j 但这并不适用于每个星期一 date strtotime every
  • 根据每个对象中关键属性的连接来合并/扩展 javascript 对象数组

    我想通过首先加入 id 属性来合并以下对象数组 var arr1 id 1 name fred title boss id 2 name jim title nobody id 3 name bob title dancer var arr
  • 为什么 as.Date 在字符向量上速度很慢?

    我开始在 R 中使用 data table 包来提高代码的性能 我正在使用以下代码 sp500 lt read csv rawdata GMTSP csv days lt c Monday Tuesday Wednesday Thursda
  • 在《哈姆雷特》中使用 UTCTime

    我在我的第一个网站上使用 Yesod 并且有一个新闻列表 NewsItem date UTCTime default CURRENT TIME title String content String author String 在我的处理程