Haskell-如何从ZonedTime提取Day和DayOfWeek时间
我正在看模块,我想要如下内容:Haskell-如何从ZonedTime提取Day和DayOfWeek时间,haskell,Haskell,我正在看模块,我想要如下内容: import Data.Time.LocalTime timeOfDayAndDayOfWeek :: ZonedTime -> (TimeOfDay, DayOfWeek) 我该怎么做?这对你有用吗 import Data.Time.LocalTime (ZonedTime, TimeOfDay, getZonedTime, localDay, localTimeOfDay, zonedTimeToLocalTime) import Data
import Data.Time.LocalTime
timeOfDayAndDayOfWeek :: ZonedTime -> (TimeOfDay, DayOfWeek)
我该怎么做?这对你有用吗
import Data.Time.LocalTime
(ZonedTime, TimeOfDay, getZonedTime, localDay, localTimeOfDay,
zonedTimeToLocalTime)
import Data.Time.Calendar.WeekDate (toWeekDate)
-- toWeekDate numbers the days 1 for Monday to 7 for Sunday.
data DayOfWeek = Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday
deriving (Eq, Read, Show)
instance Enum DayOfWeek where
toEnum 0 = Sunday
toEnum 1 = Monday
toEnum 2 = Tuesday
toEnum 3 = Wednesday
toEnum 4 = Thursday
toEnum 5 = Friday
toEnum 6 = Saturday
toEnum 7 = Sunday -- Yes, twice.
toEnum n = toEnum (n `mod` 7)
fromEnum Monday = 1
fromEnum Tuesday = 2
fromEnum Wednesday = 3
fromEnum Thursday = 4
fromEnum Friday = 5
fromEnum Saturday = 6
fromEnum Sunday = 7
timeOfDayAndDayOfWeek :: ZonedTime -> (TimeOfDay, DayOfWeek)
timeOfDayAndDayOfWeek zt = let
lt = zonedTimeToLocalTime zt
day = localDay lt
(_, _, weekDayNumber) = toWeekDate day
dow = toEnum weekDayNumber
tod = localTimeOfDay lt
in
(tod, dow)
main :: IO ()
main = do
zt <- getZonedTime
let (tod, dow) = timeOfDayAndDayOfWeek zt
print tod
print dow
这对你有用吗
import Data.Time.LocalTime
(ZonedTime, TimeOfDay, getZonedTime, localDay, localTimeOfDay,
zonedTimeToLocalTime)
import Data.Time.Calendar.WeekDate (toWeekDate)
-- toWeekDate numbers the days 1 for Monday to 7 for Sunday.
data DayOfWeek = Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday
deriving (Eq, Read, Show)
instance Enum DayOfWeek where
toEnum 0 = Sunday
toEnum 1 = Monday
toEnum 2 = Tuesday
toEnum 3 = Wednesday
toEnum 4 = Thursday
toEnum 5 = Friday
toEnum 6 = Saturday
toEnum 7 = Sunday -- Yes, twice.
toEnum n = toEnum (n `mod` 7)
fromEnum Monday = 1
fromEnum Tuesday = 2
fromEnum Wednesday = 3
fromEnum Thursday = 4
fromEnum Friday = 5
fromEnum Saturday = 6
fromEnum Sunday = 7
timeOfDayAndDayOfWeek :: ZonedTime -> (TimeOfDay, DayOfWeek)
timeOfDayAndDayOfWeek zt = let
lt = zonedTimeToLocalTime zt
day = localDay lt
(_, _, weekDayNumber) = toWeekDate day
dow = toEnum weekDayNumber
tod = localTimeOfDay lt
in
(tod, dow)
main :: IO ()
main = do
zt <- getZonedTime
let (tod, dow) = timeOfDayAndDayOfWeek zt
print tod
print dow
您可以从
ZonedTime
到LocalTime
到Day
使用Day
可以获取DayOfWeek
enum
并使用
localTimeOfDay
从LocalTime
转到TimeOfDay
您可以从ZonedTime
转到LocalTime
到Day
使用Day
可以获取DayOfWeek
enum
并使用
localTimeOfDay
从LocalTime
转到TimeOfDay
希望这些信息及时到达您的手中,告诉您新年是什么时候。祝你快乐!希望你能及时收到这封信,告诉你什么时候是新年。祝你快乐!您可以使用派生(Enum)
来避免编写样板代码。只需从toWeekDate
的结果中减去一个即可。不幸的是,no.toWeekDate
返回7,而不是0。您可以使用ToekNum(weekDayNumber-1)
来避免编写自定义Enum
实例。然后,我无法将结果传递给ToekNum
@4castle,我添加了第二个使用包装器而不是样板的示例。您可以使用派生(Enum)
来避免编写样板代码。只需从toWeekDate
的结果中减去一个即可。不幸的是,no.toWeekDate
返回7,而不是0。您可以使用ToekNum(weekDayNumber-1)
来避免编写自定义Enum
实例。然后,我无法将结果传递给ToekNum
@4castle,我添加了第二个使用包装器而不是样板的示例。