X-Git-Url: http://gitweb.michael.orlitzky.com/?p=dead%2Fhtsn-import.git;a=blobdiff_plain;f=src%2FTSN%2FPicklers.hs;h=09c3a3b1000ac983251108afb5e570bdb40eb8c5;hp=6f131a75b921f4aac3490a39214a5106db0f6160;hb=6eb1c7477c2d4d3cace6d1b865a5efbec21300a7;hpb=f1ec53a41f9d1fc0761a92476e20f214b9b75d79 diff --git a/src/TSN/Picklers.hs b/src/TSN/Picklers.hs index 6f131a7..09c3a3b 100644 --- a/src/TSN/Picklers.hs +++ b/src/TSN/Picklers.hs @@ -23,7 +23,7 @@ import Data.List ( intercalate ) import Data.List.Split ( chunksOf ) import Data.Maybe ( catMaybes, listToMaybe ) import Data.String.Utils ( replace ) -import Data.Time.Clock ( NominalDiffTime, UTCTime, addUTCTime ) +import Data.Time.Clock ( UTCTime ) import Data.Time.Format ( formatTime, parseTime ) import Data.Tree.NTree.TypeDefs ( NTree(..) ) import System.Locale ( TimeLocale( wDays, months ), defaultTimeLocale ) @@ -454,29 +454,30 @@ xp_tba_time = -- -- \ January 6, 2014, at 10:11 PM ET \ -- --- TSN doesn't provide a proper time zone name, so we assume that --- it's always Eastern Standard Time. EST is UTC-5, so we --- add/subtract 5 hours to convert to/from UTC. +-- TSN doesn't provide a proper time zone name, only \"ET\" for +-- \"Eastern Time\". But \"Eastern Time\" changes throughout the +-- year, depending on one's location, for daylight-savings +-- time. It's really not any more useful to be off by one hour than +-- it is to be off by 5 hours, so rather than guess at EDT/EST, we +-- just store the timestamp as UTC. -- -- Examples: -- -- >>> let tn = text_node " January 6, 2014, at 10:11 PM ET " --- >>> unpickleDoc xp_time_stamp tn --- Just 2014-01-07 03:11:00 UTC +-- >>> let (Just tstamp) = unpickleDoc xp_time_stamp tn +-- >>> tstamp +-- 2014-01-06 22:11:00 UTC +-- >>> pickleDoc xp_time_stamp tstamp +-- NTree (XTag "/" []) [NTree (XText " January 6, 2014, at 10:11 PM ET ") []] -- xp_time_stamp :: PU UTCTime xp_time_stamp = (parse_time_stamp, from_time_stamp) `xpWrapMaybe` xpText where - five_hours :: NominalDiffTime - five_hours = 5 * 60 * 60 - - subtract_five :: UTCTime -> UTCTime - subtract_five = addUTCTime (-1 * five_hours) - from_time_stamp :: UTCTime -> String from_time_stamp = - formatTime defaultTimeLocale time_stamp_format . subtract_five + formatTime defaultTimeLocale time_stamp_format + -- | (Un)pickle an ambiguous 12-hour AM/PM time, which is ambiguous