Haskell 98报告
顶部|后面|下一个|目录|功能索引
24 日期和时间
模块时间( 时钟时间 月(一月、二月、三月、四月、五月、六月, 七月、八月、九月、十月、十一月、十二月), 天(星期日、星期一、星期二、星期三、星期四、星期五、星期六), 日历时间(CalendarTime、ctYear、ctMonth、ctDay、ctHour、ctMin、, ctSec、ctPicosec、ctWDay、ctYDay、 ctTZ名称、ctTZ、ctIsDST), 时间差异(时间差异,tdYear,tdMonth,tdDay,tdHour, tdMin、tdSec、tdPicosec), 获取时钟时间、添加到时钟时间、差异时钟时间、, 到日历时间,到UTC时间,到时钟时间, calendarTimeToString,formatCalendarTime),其中
输入Ix(Ix)
数据时钟时间=。。。--依赖于实施 实例Ord ClockTime,其中。。。 实例Eq ClockTime,其中。。。
data Month=一月|二月|三月|四月 |5月|6月|7月|8月 |9月|10月|11月|12月 派生(Eq、Ord、Enum、Bounded、Ix、Read、Show)
data Day=星期日|星期一|星期二|星期三|星期四 |星期五|星期六 派生(Eq、Ord、Enum、Bounded、Ix、Read、Show)
data CalendarTime=日历时间{ ctYear::国际, ctMonth::月, ctDay、ctHour、ctMin、ctSec::Int、, ctPicosec::整数, ctWDay::天, ctYDay::整数, ctTZName::字符串, ctTZ::国际, ctIsDST::布尔 }推导(等式、命令、读取、显示)
data TimeDiff=时间差异{ tdYear、tdMonth、tdDay、tdHour、tdMin、tdSec::Int、, tdPicosec::整数 }推导(等式、命令、读取、显示)
|
--定时功能 获取时钟时间::IO时钟时间 添加到时钟时间::TimeDiff->时钟时间->时钟时间 差异时钟时间::时钟时间->时钟时间->时间差异 到日历时间::时钟时间->IO日历时间 到UTC时间::时钟时间->日历时间 到时钟时间::CalendarTime->ClockTime calendarTimeToString::CalendarTime->String formatCalendarTime::TimeLocale->String->CalendarTime->String
|
这个时间库提供时钟时间的标准功能,包括时区信息。它遵循RFC 1129使用协调世界时(UTC)。
时钟时间是抽象类型,用于系统的内部时钟时间。时钟时间可以直接比较或转换为日历时间日历时间用于I/O或其他操作。日历时间是用户可读和可操作的内部时钟时间类型。数字字段具有以下内容范围。
| 价值 | | 范围 | | 评论 | |
| ct年 | | -最大Int。。。 | 最大Int | 产前日期不准确 | | ctDay公司 | | 1... | 31 | | ct小时 | | 0... | 23 | | ctMin(最小值) | | 0... | 59 | | ct秒 | | 0... | 61 | 允许两个跳跃秒 | | ctPicosec公司 | | 0... | (1012)-1 | | ctY日 | | 0... | 365 | 非闰年364人 | | ctTZ公司 | | -89999... | 89999 | UTC变化(秒) |
|
这个ctTZ名称字段是时区的名称。这个ctIsDST公司领域是真的夏令时是否有效,以及False(错误)否则。这个时间差异type在中记录两个时钟时间的差异用户可读的方式。功能获取时钟时间返回其内部的当前时间代表。表达式添加到时钟时间 d日 t吨添加时差d日和a时钟时间t吨以产生新的时钟时间。差异d日可以是积极或消极。表达式差异时钟时间 t1时间 t2时间返回两个时钟时间之间的差值t1时间和t2时间作为一个时间差异.
功能至日历时间 t吨转换t吨到本地时间,已修改根据时区和夏令时设置转换时间。由于对当地环境的依赖,至日历时间位于IO(输入输出)莫纳德。
功能到UTC时间 t吨转换t吨到日历时间采用标准UTC格式。到时钟时间 我转换我进入相应的内部时钟时间忽略ctW天,ctY日,ctTZ名称、和ctIsDST公司领域。
功能日历时间到字符串格式使用本地约定和格式字符串的日历时间。
24.1 图书馆时间
模块时间(
时钟时间
月(一月、二月、三月、四月、五月、六月,
七月、八月、九月、十月、十一月、十二月),
天(星期日、星期一、星期二、星期三、星期四、星期五、星期六),
日历时间(CalendarTime、ctYear、ctMonth、ctDay、ctHour、ctMin、,
ctSec、ctPicosec、ctWDay、ctYDay、
ctTZ名称、ctTZ、ctIsDST),
时间差异(时间差异,tdYear,tdMonth,tdDay
td小时、td分钟、td秒、td皮秒),
获取时钟时间、添加到时钟时间、差异时钟时间、,
到日历时间,到UTC时间,到时钟时间,
calendarTimeToString,格式CalendarTime),其中
导入Ix(Ix)
导入区域设置(TimeLocale(..),defaultTimeLocale)
导入字符(intToDigit)
data ClockTime=。。。--依赖于实施
实例Ord ClockTime,其中。。。
实例Eq ClockTime,其中。。。
data Month=一月|二月|三月|四月
|5月|6月|7月|8月
|9月|10月|11月|12月
派生(Eq、Ord、Enum、Bounded、Ix、Read、Show)
data Day=星期日|星期一|星期二|星期三|星期四
|星期五|星期六
派生(Eq、Ord、Enum、Bounded、Ix、Read、Show)
data CalendarTime=日历时间{
ctYear::国际,
ctMonth::月,
ctDay、ctHour、ctMin、ctSec::Int、,
ctPicosec::整数,
ctWDay::天,
ctYDay::整数,
ctTZName::字符串,
ctTZ::内部,
ctIsDST::布尔
}推导(Eq、Ord、Read、Show)
data TimeDiff=时间差异{
tdYear、tdMonth、tdDay、tdHour、tdMin、tdSec::Int、,
tdPicosec::整数
}推导(等式、顺序、读取、显示)
获取时钟时间::IO时钟时间
getClockTime=。。。--依赖于实施
添加到时钟时间::TimeDiff->时钟时间->时钟时间
addToClockTime td ct=。。。--依赖于实施
差异时钟时间::时钟时间->时钟时间->时间差异
diffClockTimes ct1 ct2=。。。--依赖于实施
到日历时间::时钟时间->IO日历时间
toCalendarTime ct=。。。--依赖于实施
到UTC时间::时钟时间->日历时间
toUTC时间ct=。。。--依赖于实施
到时钟时间::CalendarTime->ClockTime
toClockTime校准=。。。--依赖于实施
calendarTimeToString::CalendarTime->String
calendarTimeToString=formatCalendarTime defaultTimeLocale“%c”
formatCalendarTime::TimeLocale->String->CalendarTime->String
formatCalendarTime l fmt ct@(CalendarTime-年-月-日-小时-分-秒-秒
wday yday tzname _ _)=
doFmt功能表
其中doFmt(“%”:c:cs)=解码c++doFmt-cs
doFmt(c:cs)=c:doFmt-cs
doFmt“”=“”
到12::Int->Int
到12 h=让h'=h`mod`12 in,如果h'==0,则其他12 h'
解码'A'=fst(wDays l!!fromEnum wday)
解码'a'=snd(wDays l!!fromEnum wday)
decode'B'=fst(月份l!!from枚举mon)
decode'b'=snd(月份l!!from枚举mon)
decode'h'=snd(月份l!!来自Enum mon)
解码'C'=show2(年份`quot`100)
解码'c'=doFmt(dateTimeFmt l)
解码'D'=doFmt“%m/%D/%y”
解码'd'=演出2天
解码'e'=show2'天
解码“H”=演出2小时
解码“I”=show2(12小时)
解码“j”=show3 yday
解码“k”=show2小时
解码'l'=show2'(12小时)
解码“M”=演出2分钟
解码'm'=show2(fromEnum mon+1)
解码'n'=“\n”
解码“p”=(如果小时<12,则fst else snd)(amPm l)
解码'R'=doFmt“%H:%M”
解码'r'=doFmt(时间12Fmt l)
解码'T'=doFmt“%H:%M:%S”
解码't'=“\t”
解码“S”=显示2秒
解码's'=。。。--依赖于实施
解码“U”=show2((yday+7-fromEnum wday)`div`7)
解码“u”=显示(让n=fromEnum wday in
如果n==0,则其他n)
解码“V”=
let(周,天)=
(yday+7-如果fromEnum wday>0,则
fromEnum wday-1其他6)`divMod`7
在show2中(如果天数>=4,则
周+1
else如果week==0,则为53 else week)
解码“W”=
show2((yday+7-如果fromEnum wday>0,则
fromEnum wday-1其他6)`div`7)
解码'w'=显示(fromEnum wday)
解码'X'=doFmt(时间Fmt l)
解码'x'=doFmt(日期Fmt l)
解码'Y'=显示年份
解码'y'=show2(年份`rem`100)
解码“Z”=tzname
解码“%”=“%”
解码c=[c]
show2,show2',show3::Int->字符串
show2 x=[intToDigit(x`quot`10),intToDi吉特(x`rem`10)]
show2'x=如果x<10,则['',intToDigit x]否则show2 x
show3 x=整数到数字(x`quot`100):show2(x`rem`100)
Haskell 98报告
顶部|后面|下一个|目录|功能索引