2011-11-20 2 views
6

yesod-sitemap을 사용하여 사이트 맵 파일을 생성하는 getSitemapR 처리기를 작성하고 있습니다. 문제는 StringUTCTime으로 변환하여 Data.Time.Clock에 정의 된 것입니다. haddock 설명서는 UTCTimeRead typeclass의 인스턴스라고 말합니다. 그래서 그것은 제가 시도하고있는 것입니다. 여기 내 코드가있다. "나는 용어 ​​'하스켈과 구글을 검색 한,문자열을 UTC 시간 형식으로 변환합니다.

module Handler.Root where 

import Import 
import Yesod.Goodies.Gravatar 
import Data.Time.Format 
import System.Locale 
-- This is a handler function for the GET request method on the RootR 
-- resource pattern. All of your resource patterns are defined in 
-- config/routes 
-- 
-- The majority of the code you will write in Yesod lives in these handler 
-- functions. You can spread them across multiple files if you are so 
-- inclined, or create a single monolithic file. 
getRootR :: Handler RepHtml 
getRootR = do 
    defaultLayout $ do 
     h2id <- lift newIdent 
     setTitle "Cloudrr homepage" 
     $(widgetFile "homepage") 

gravatar :: Text -> String 
gravatar email = 
    gravatarImg email go 
    where 
    go = GravatarOptions { 
     gSize = Just (Size 140) 
     , gDefault = Just (Identicon) 
     , gForceDefault = ForceDefault False 
     , gRating = Just (PG) 
     } 

getSitemapR :: Handler RepXml 
getSitemapR = do 
    sitemap [smo RootR] 
    where 
    smo = SitemapUrl SitemapR{ 
     sitemapLoc = "http://www.cloudrr.me/sitemap.xml" 
     , sitemapLastMod = (read "2011-11-19 18:28:r52.607875 UTC")::UTCTime 
     , sitemapChangeFreq = Weekly 
     , priority = 0.7 
     } 

나는 시스템 프로그래밍에 20 장에 실제 세계 하스켈의 내 사본을 검토 한 결과,하지만이 코드 샘플의에서이 UTCTime 적용되지 않습니다 아무 결과도없이 문자열을 UTCTime " '으로 변환하십시오. 이 Maybe UTCTime을 가지지 않아서 작동하지 않는 haskell-cafe 메일 링리스트에 다음과 같은 Thread이 있습니다. 나는 여기서 정말로 바보 같은 실수를하고 있다고 생각하지만, 나는 확실하지 않다. 누군가 나를 올바른 방향으로 가리키게 할 수 있겠는가?

시간 내 주셔서 감사드립니다.

+2

'읽기'를 사용하고 있으며 코드가 컴파일되지 않습니까? 아니면 코드가 컴파일되지 않습니까? 네가 어디에서 붙어 있었는지 명확하게 말할 수 있니? – Tarrasch

답변

7
, sitemapLastMod = (read "2011-11-19 18:28:r52.607875 UTC")::UTCTime 

소문자 r이 없어야합니다. 시도해보십시오.

, sitemapLastMod = (read "2011-11-19 18:28:52.607875 UTC")::UTCTime 
관련 문제