这个包提供了一个日期时间数据类型,正如zope所知。除非需要与zopeapi通信,否则最好使用python的内置datetime模块。
DateTime的Python项目详细描述
日期时间包
日期/时间值的封装。
功能时区()
返回已识别时区名称的列表:
< Buff行情>>>> from DateTime import Timezones >>> zones = set(Timezones())
几乎所有的标准Pytz时区都包括在内,除了 一些常用但模棱两可的缩写,其中 用法与pytz使用的名称冲突:
< Buff行情>>>> import pytz >>> [x for x in pytz.all_timezones if x not in zones] ['CET', 'EET', 'EST', 'MET', 'MST', 'WET']
类日期时间
DateTime对象在时间上表示实例并为 在不影响 对象。
DateTime对象可以由多种字符串或 数值数据,或者可以从其他日期时间对象计算。 日期时间支持将其表示转换为多个 主要时区,以及创建DateTime对象的功能 在给定时区的上下文中。
datetime对象提供部分数值行为:
- 可以减去两个日期时间对象来获得时间(以天为单位) 两者之间。
- 日期时间对象和正数或负数可以添加到 获取一个新的日期时间对象,它是给定的天数 而不是输入日期时间对象。
- 可以将正数或负数和日期时间对象添加到 获取一个新的日期时间对象,它是给定的天数 而不是输入日期时间对象。
- 正数或负数可以从日期时间中减去 对象获取新的日期时间对象,该对象是给定的 早于输入日期时间对象的天数。
DateTime对象可以转换为整数、长或浮点数 自1901年1月1日起的天数,使用标准int、long和float 函数(兼容性说明:int、long和float返回数字 自1901年以来的天数(GMT,而不是本地机器时区)。 DateTime对象还提供以浮点格式访问其值的权限 与python时间模块一起使用,前提是 对象落在基于历元的时间模块的范围内。
DateTime对象应视为不可变;所有转换和数值 操作返回一个新的datetime对象,而不是修改当前对象。
DateTime对象始终将其值保持为绝对UTC时间, 并在某个时区的上下文中基于 用于创建对象的参数。DateTime对象的方法 基于时区上下文返回值。
请注意,在所有情况下,本地计算机时区都用于 如果未指定时区,则显示。
日期时间的构造函数
dateTime()返回一个新的日期时间对象。可以创建日期时间 从零到七个参数:
如果调用该函数时没有参数,则当前日期/ 返回时间,以本地计算机的时区表示。
如果使用单个字符串参数调用函数,该参数是 可识别的时区名称,表示当前时间的对象是 返回,在指定时区中表示。
如果使用单个字符串参数调用函数 表示有效的日期/时间,表示该日期的对象/ 将返回时间。
作为一般规则,任何被认可的日期时间表示 对北美居民来说,毫不含糊是可以接受的。(The 这一资格的原因是在北美,一个日期如下: 1994年2月1日被解释为1994年2月1日,而 世界,解释为1994年1月2日)日期/时间 字符串由两个组件组成,日期组件和可选组件 时间成分,由一个或多个空间分隔。如果时间 忽略组件,假定为上午12:00。
指定的任何可识别时区名称作为 日期/时间字符串将用于计算日期/时间值。 (如果使用字符串创建日期时间, "1997年3月9日下午1:45美国/太平洋",价值将主要是 与在指定日期捕获time.time()和 在那个时区的机器上的时间)。如果没有超过时区,那么 将使用本地计算机上配置的时区, 除了 如果日期格式与iso 8601('yyyy-mm-dd')匹配,则 将使用UTC/CMT+0作为时区。
o返回当前日期/时间,以美国/东方表示:
< Buff行情>>>> from DateTime import DateTime >>> e = DateTime('US/Eastern') >>> e.timezone() 'US/Eastern'
o返回指定的时间,用本地机器区域表示:
< Buff行情>>>> x = DateTime('1997/3/9 1:45pm') >>> x.parts() # doctest: +ELLIPSIS (1997, 3, 9, 13, 45, ...)
o本地机器区域中的指定时间,详细格式:
< Buff行情>>>> y = DateTime('Mar 9, 1997 13:45:00') >>> y.parts() # doctest: +ELLIPSIS (1997, 3, 9, 13, 45, ...) >>> y == x True
o通过ISO 8601规定的UTC时间规则:
< Buff行情>>>> z = DateTime('2014-03-24') >>> z.parts() # doctest: +ELLIPSIS (2014, 3, 24, 0, 0, ...) >>> z.timezone() 'GMT+0'
日期组件由年、月和日值组成。这个 年份值必须是一位、两位或四位整数。如果一个- 或者使用两位数的年份,假定年份在 二十世纪。月份可以是一个整数,从1到12,一个月 名称,或月份删减,其中一个期间可以选择跟随 删节。日期必须是从1到 一个月中的天。年、月和日的值可以分开 按句点、连字符、前进、闪影或空格。额外的空间是 允许在分隔符周围使用。年、月和日的值可以是 以任何顺序给出,只要能够区分 组件。如果三个分量都是小于 13,则假定一个月一天一年的订购。
时间分量由小时、分钟和秒值组成 用冒号隔开。小时值必须是0之间的整数 包括23个。分钟值必须是0之间的整数 包括59个。第二个值可以是整数值 包括0到59.999。第二个值或两者 可以输入分钟和秒值。时间可能紧随其后 上午或下午,在大写或小写的情况下,在这种情况下,12小时时钟是 假设,
如果使用单个数值参数调用datetime函数, 该数字假定为浮点值,如 在time.time()或1月1日之后几天返回的, 1901 00:00:00 UTC。
返回表示GMT值的DateTime对象 在本地计算机的 时区,或1901年1月1日之后的天数。注意 1901年之后的天数需要从 本地计算机时区的视图。否定的论点会 在1901年之前生成日期时间值。
如果使用两个数字参数调用函数,则 第一个参数是整数年,第二个参数是 从年初算起,在 本地计算机时区的上下文。返回的日期时间值 是从给定的 年,在本地计算机的时区中表示。偏移量 可能是正的,也可能是负的。假设两位数年份 二十世纪。
如果使用两个参数调用函数,则第一个参数为float 表示格林尼治标准时间历元过去的秒数(例如 由time.time()返回的字符串)和第二个a字符串命名为 识别的时区,值为GMT时间的日期时间将 返回,表示在给定时区。
< Buff行情>>>> import time >>> t = time.time()
时间t表示为us/东部:
< Buff行情>>>> now_east = DateTime(t, 'US/Eastern')
时间t表示为美国/太平洋:
< Buff行情>>>> now_west = DateTime(t, 'US/Pacific')
只有它们的表示不同:
< Buff行情>>>> from DateTime import Timezones >>> zones = set(Timezones())
0如果函数是用三个或更多的数值参数调用的, 然后第一个被认为是整数年,取第二年 为整数月,第三个为整数日。 如果值的组合无效,则datetimeerror为 提高。一位或两位数字的年份(最多69年)假设为 21世纪,而价值观70-99被认为是20世纪。 第四、第五和第六个参数是浮点,正 或以小时、分钟和天为单位的负偏移,以及 如果未给定,则默认为零。可选字符串可以指定为 表示时区的最后一个参数(其效果是 你当时在一台机器上获取了time.time()的值 指定的时区)。
如果传递给DateTime构造函数的字符串参数不能是 解析后,它将增加语法错误。无效的日期、时间或 时区组件将引发日期时间错误。
模块函数timezones()将返回时区列表 由DateTime模块识别。时区名称的识别是 不区分大小写。
DateTime的实例方法(IDateTime接口)
转换和比较方法
time time()
以浮点数字形式返回日期/时间
utc,采用python时间模块使用的格式。注意它是
可以使用没有
对时间模块有意义的值,在这种情况下
引发日期时间错误。DateTime对象的值通常必须
介于1970年1月1日(或您的本地机器纪元)到2038年1月
生成有效的time.time()样式值。
< Buff行情>
>>> from DateTime import Timezones
>>> zones = set(Timezones())
1
>>> from DateTime import Timezones
>>> zones = set(Timezones())
2
>>> from DateTime import Timezones
>>> zones = set(Timezones())
3
tozone(z)
返回值为当前值的日期时间
对象,表示在指定时区:
< Buff行情>
>>> from DateTime import Timezones
>>> zones = set(Timezones())
4
>>> from DateTime import Timezones
>>> zones = set(Timezones())
5
isfuture()
如果此对象表示日期/时间,则返回true
晚于通话时间:
< Buff行情>
>>> from DateTime import Timezones
>>> zones = set(Timezones())
6
ispast()
如果此对象表示日期/时间,则返回true
早于通话时间:
< Buff行情>
>>> from DateTime import Timezones
>>> zones = set(Timezones())
7
iscurrentYear()
如果此对象表示
本年度内的日期/时间
对象的时区表示:
< Buff行情>
>>> from DateTime import Timezones
>>> zones = set(Timezones())
8
iscurrentmonth()
如果此对象表示
当前月份内的日期/时间,在
此对象的时区表示:
< Buff行情>
>>> from DateTime import Timezones
>>> zones = set(Timezones())
9
iscurrentday()
如果此对象表示
当前日期内的日期/时间,在此上下文中
对象的时区表示:
< Buff行情>
>>> import pytz
>>> [x for x in pytz.all_timezones if x not in zones]
['CET', 'EET', 'EST', 'MET', 'MST', 'WET']
0
iscurrenthour()
如果此对象表示
当前小时内的日期/时间,在此上下文中
对象的时区表示:
< Buff行情>
>>> import pytz
>>> [x for x in pytz.all_timezones if x not in zones]
['CET', 'EET', 'EST', 'MET', 'MST', 'WET']
1
>>> import pytz
>>> [x for x in pytz.all_timezones if x not in zones]
['CET', 'EET', 'EST', 'MET', 'MST', 'WET']
2
iscurrentminute()
如果此对象表示
当前分钟内的日期/时间,在
此对象的时区表示:
< Buff行情>
>>> import pytz
>>> [x for x in pytz.all_timezones if x not in zones]
['CET', 'EET', 'EST', 'MET', 'MST', 'WET']
3
isleapYear()
如果当前年份(在
对象的时区)是闰年:
< Buff行情>
>>> import pytz
>>> [x for x in pytz.all_timezones if x not in zones]
['CET', 'EET', 'EST', 'MET', 'MST', 'WET']
4
< DL>
-
earliessttime()
返回表示
仍在范围内的最早可能时间(以秒为单位)
当前对象的日期,在对象的时区上下文中:
>>> import pytz
>>> [x for x in pytz.all_timezones if x not in zones]
['CET', 'EET', 'EST', 'MET', 'MST', 'WET']
5
latestTime()
返回表示
最新的可能时间(以整秒为单位),仍在
当前对象的日期,在对象的时区上下文中
BLOCKQuo>
啊!
time time() 以浮点数字形式返回日期/时间 utc,采用python时间模块使用的格式。注意它是 可以使用没有 对时间模块有意义的值,在这种情况下 引发日期时间错误。DateTime对象的值通常必须 介于1970年1月1日(或您的本地机器纪元)到2038年1月 生成有效的time.time()样式值。
< Buff行情>>>> from DateTime import Timezones >>> zones = set(Timezones())1
>>> from DateTime import Timezones >>> zones = set(Timezones())2
>>> from DateTime import Timezones >>> zones = set(Timezones())3
tozone(z) 返回值为当前值的日期时间 对象,表示在指定时区:
< Buff行情>>>> from DateTime import Timezones >>> zones = set(Timezones())4
>>> from DateTime import Timezones >>> zones = set(Timezones())5
isfuture() 如果此对象表示日期/时间,则返回true 晚于通话时间:
< Buff行情>>>> from DateTime import Timezones >>> zones = set(Timezones())6
ispast() 如果此对象表示日期/时间,则返回true 早于通话时间:
< Buff行情>>>> from DateTime import Timezones >>> zones = set(Timezones())7
iscurrentYear() 如果此对象表示 本年度内的日期/时间 对象的时区表示:
< Buff行情>>>> from DateTime import Timezones >>> zones = set(Timezones())8
iscurrentmonth() 如果此对象表示 当前月份内的日期/时间,在 此对象的时区表示:
< Buff行情>>>> from DateTime import Timezones >>> zones = set(Timezones())9
iscurrentday() 如果此对象表示 当前日期内的日期/时间,在此上下文中 对象的时区表示:
< Buff行情>>>> import pytz >>> [x for x in pytz.all_timezones if x not in zones] ['CET', 'EET', 'EST', 'MET', 'MST', 'WET']0
iscurrenthour() 如果此对象表示 当前小时内的日期/时间,在此上下文中 对象的时区表示:
< Buff行情>>>> import pytz >>> [x for x in pytz.all_timezones if x not in zones] ['CET', 'EET', 'EST', 'MET', 'MST', 'WET']1
>>> import pytz >>> [x for x in pytz.all_timezones if x not in zones] ['CET', 'EET', 'EST', 'MET', 'MST', 'WET']2
iscurrentminute() 如果此对象表示 当前分钟内的日期/时间,在 此对象的时区表示:
< Buff行情>>>> import pytz >>> [x for x in pytz.all_timezones if x not in zones] ['CET', 'EET', 'EST', 'MET', 'MST', 'WET']3
isleapYear() 如果当前年份(在 对象的时区)是闰年:
< Buff行情>>>> import pytz >>> [x for x in pytz.all_timezones if x not in zones] ['CET', 'EET', 'EST', 'MET', 'MST', 'WET']4
仍在范围内的最早可能时间(以秒为单位) 当前对象的日期,在对象的时区上下文中:
>>> import pytz >>> [x for x in pytz.all_timezones if x not in zones] ['CET', 'EET', 'EST', 'MET', 'MST', 'WET']5
latestTime() 返回表示 最新的可能时间(以整秒为单位),仍在 当前对象的日期,在对象的时区上下文中
BLOCKQuo> 啊!组件访问
parts() 返回一个包含日历年、月份的元组, 对象的日、时、分、秒和时区
<阻塞率> 是啊。时区() 返回表示对象的时区:
<阻塞率> AAAAAAAAA 28tzoffset() 返回对象的时区偏移量时区:
<阻塞率> AAAAAAA 29year() 返回对象的日历年:
<阻塞率> AAAAAAA 30month() 以整数形式返回对象的月份:
<阻塞率> 啊!month() 返回完整的月份名称:
<阻塞率> 啊!amonth() 返回已删除的月份名称:
<阻塞率> 是啊。p month() 返回已删节(带句点)的月份名称:
<阻塞率> 啊!day() 返回整数日:
<阻塞率> 啊!day() 返回一周中某一天的全名:
<阻塞率> 啊!DayofYear() 返回一年中的某一天,在 对象的时区表示:
<阻塞率> AAAAAAA 37aday() 返回星期几的缩写名:
<阻塞率> AAAAAAAAA 38pday() 返回 本周:
<阻塞率> 啊!dow() 返回一周中的整数日,其中星期日为0:
<阻塞率> 啊!dowu 1() 返回一周中的整数日,其中星期日为1:
<阻塞率> AAAAAAA 41h u 12() 返回小时的12小时时钟表示:
<阻塞率> AAAAAAA 42h u 24() 返回小时的24小时时钟表示:
<阻塞率> 啊!am pm() 返回适当的时间修饰符(am或pm):
<阻塞率> 啊!hour() 返回小时的24小时时钟表示:
<阻塞率> 啊!45!分钟() 返回分钟:
<阻塞率> 啊!秒() 返回秒:
<阻塞率> 啊!millis() 返回自格林尼治时间纪元以来的毫秒数。
<阻塞率> AAAAAAA 48
strftime()
请参见 tests/test/datetime.py
以前日期时间的常规格式
日期() 返回对象的日期字符串:
<阻塞率> AAAAAAA 49time() 将对象的时间字符串返回到最近的 第二:
<阻塞率> 啊!timeminutes() 返回未显示对象的时间字符串 秒数:
<阻塞率> 啊!ampm() 将对象的时间字符串返回到最接近的秒数:
<阻塞率> AAAAAAA 52ampmminutes() 返回未显示对象的时间字符串 秒数:
<阻塞率> 次级方案53precisetime() 返回对象的时间字符串:
<阻塞率> 啊!preciseampm() 返回对象的时间字符串:
<阻塞率> 啊!yy() 以2位字符串的形式返回日历年
<阻塞率> 啊!mm() 将月份返回2位数< > > > <阻塞率> 啊!
dd() 将日期返回为2位字符串:
<阻塞率> AAAAAAA 58rfc822() 以rfc822格式返回日期:
<阻塞率> 啊!
新格式
fcommon() 返回一个字符串,表示 格式:1997年3月9日下午1:45:
<阻塞率> 啊!60!fcommonz() 返回一个字符串,表示 格式:1997年3月9日下午1:45美国/东部:
<阻塞率> AAAAAAA 61acomon() 返回一个字符串,表示 格式:1997年3月9日下午1:45:
<阻塞率> AAAAAAA 62acomonz() 返回一个字符串,表示对象在 格式:1997年3月9日下午1:45美国/东部:
<阻塞率> AAAAAAA 63pcommon() 返回一个字符串,表示 格式:1997年3月9日下午1:45:
<阻塞率> AAAAAAA 64pcommonz() 返回一个字符串,表示 格式:1997年3月9日下午1:45美国/东部:
<阻塞率> 啊!iso() 以iso格式返回带有日期/时间的字符串。注: 这不是ISO 8601格式!参见下面的ISO8601和HTML4方法 用于符合ISO 8601标准的输出。数据输出为:yyyy-mm-dd hh:mm:ss
<阻塞率> AAAAAAA 66iso8601() 以与iso8601兼容的格式返回对象 包含日期、时间(秒)-精度和时区 标识符-请参见http://www.w3.org/tr/note-datetime" rel="nofollow">http://www.w3.org/tr/note-datetime。日期是 输出为:yyyy-mm-ddthh:mm:sstzd(t是文本字符,tzd是 时区设计器,格式+hh:mm或-hh:mm)。
下面的 html4() 方法提供相同的格式,但是 返回值前转换为UTC并设置TZD"Z"
<阻塞率> 啊!html4() 以html4.0中使用的格式返回对象 规范,ISO8601标准格式之一。湖 http://www.w3.org/tr/note-datetime 。数据输出为: yyyy-mm-ddthh:mm:ssz(t,z是文本字符,时间在 UTC):
<阻塞率> 啊!julian day() 根据 http://www.tondering.dk/claus/cal/node3.html"35;sec-calcjd
<阻塞率> AAAAAAA 69week() 根据ISO返回周数 参见http://www.tondering.dk/claus/cal/node6.html 35;section006700000000000000000000000000000000000" rel="nofollow">http://www.tondering.dk/claus/cal/node6.html'35;section006700000000000000000000000000000
<阻塞率> 啊!
已弃用的API
-
星期几():参见星期几()
-
天():请参阅pday()
-
周一():请参见周一()
-
monu():请参见pmonth
由DateTime提供的一般服务
datetimes可以是repr();结果将是一个字符串,指示如何 创建这样的datetime对象:
<阻塞率> 次级方案71当我们把它们转换成一个字符串时,我们会得到一个更好的字符串 实际显示给用户:
<阻塞率> AAAAAAA 72DateTime的哈希值基于日期和时间,并且是 对于日期时间的不同表示形式,相等:
<阻塞率> AAAAAAA 73DateTime对象可以与其他DateTime对象进行比较,也可以是浮动的 点编号,如python时间返回的点编号 使用equalto方法的模块。使用此API如果 对象表示等于指定日期时间或时间模块的日期/时间。 样式时间:
<阻塞率> AAAAAAA 74不等式也一样:
<阻塞率> 啊!普通的相等操作只适用于DateTime对象,并采用 考虑时区设置:
<阻塞率> 啊! 啊!但是其他的比较操作在时间和 不是表示本身:
<阻塞率> AAAAAAA 78 AAAAAAA 79 啊! AAAAAAA 81 啊! AAAAAAA 83 AAAAAAA 84 啊!日期时间提供的数字服务
日期时间可以添加到数字,数字可以添加到 日期时间:
<阻塞率> AAAAAAA 86不能添加两个日期时间:
<阻塞率> AAAAAAAAA 87可以从日期时间中减去日期时间或数字, 但是,日期时间不能从数字中减去:
<阻塞率> 啊!日期时间也可以转换为整数(自 历元)和浮动:
<阻塞率> AAAAAAA 89