Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell-如何从ZonedTime提取Day和DayOfWeek时间_Haskell - Fatal编程技术网

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,我添加了第二个使用包装器而不是样板的示例。