标签:nbsp 情况下 好的 lower erro cal 数字 时间转换 sunday
转自:https://www.cnblogs.com/fclbky/articles/4098204.html
datetime 模块提供了各种类用于操作日期和时间,该模块侧重于高效率的格式化输出
在 Python 中,与时间处理有关的模块包括:time,datetime 以及 calendar
datetime 模块定义了两个常量:
datetime 模块中定义的类(前四个下方有详解):
注:上边这些类的对象是不可变的
上边这些类的从属关系:
timedelta 对象
timedelta 对象表示两个日期或时间之间的间隔
以上所有的参数都是可选的(默认为 0),参数的可以是整数或浮点数,正数或负数。
内部的存储单位只有 days(天)、seconds(秒)、microseconds(毫秒),其他单位均先转换后再存储:
而 days、seconds 和 microseconds 为了不产生时间表示上的歧义,将根据以下范围自动“进位”:
timedelta 类属性:
请注意,在正常情况下,timedelta.max > -timedelta.min,-timedelta.max 无意义。
timedelta 实例属性(只读):
属性 | 取值范围 |
timedelta.days | -999999999 ~ 999999999 |
timedelta.seconds | 0 ~ 86399 |
timedelta.microseconds | 0 ~ 999999 |
timedelta 对象支持的操作:
操作 | 结果 |
t1 = t2 + t3 | t2 和 t3 的和,随后:t1 - t2 == t3 and t1 - t3 == t2 为 True(注1) |
t1 = t2 - t3 | t2 和 t3 的差,随后:t1 == t2 - t3 and t2 == t1 + t3 为 True(注1) |
t1 = t2 * i 或 t1 = i * t2 | 对象乘以一个整数,随后:t1 // i == t2 为 true;且 i != 0 |
t1 = t2 * f 或 t1 = f * t2 | 对象乘以一个浮点数,结果四舍五入到精度 timedelta.resolution(注1) |
f = t2 / t3 | t2 和 t3 的商(注3),返回一个 float 对象 |
t1 = t2 / f 或 t1 = t2 / i | 对象除以一个整数或浮点数,结果四舍五入到精度 timedelta.resolution |
t1 = t2 // i 或 t1 = t2 // t3 | 对象地板除一个整数或浮点数,结果舍去小数,返回一个整数(注3) |
t1 = t2 % t3 | t2 和 t3 的余数,返回一个 timedelta 对象(注3) |
q, r = divmod(t1, t2) | 计算 t1 和 t2 的商和余数,q = t1 // t2(注3),r = t1 % t2,q 是一个整数,r 是一个 timedelta 对象 |
+t1 | 返回一个 timedelta 对象,且值相同(注2) |
-t1 | 等同于 timedelta(-t1.days, -t1.seconds, -t1.microseconds),并且相当于 t1 * -1(注1、4) |
abs(t) | 当 t.days >= 0 时,等同于 +t;当 t.days < = 时,等同于 -t(注2) |
str(t) | 返回一个字符串,按照此格式:[D day[ s ], ][H]H:MM:SS[.UUUUUU] |
repr(t) | 返回一个字符串,按照此格式:datetime.timedelta(D[, S[, U]]) |
注1:这是准确的,但可能会溢出
注2:这是准确的,并且不会溢出
注3:除数为 0 会引发 ZeroDivisionError 异常
注4:-timedelta.max 是无意义的
timedelta 实例方法:
timedelta.total_seconds()
- 返回 timedelta 对象所包含的总秒数,相当于 td / timedelta(seconds=1)
请注意,对于非常大的时间间隔(在大多数平台上是大于270年),这种方法将失去微秒(microsecond)精度
timedelta 用法示例:
date 对象
date 对象表示一个日期,在一个理想化的日历里,日期由 year(年)、month(月)、day(日)组成
所有的参数都是必需的,参数可以是整数,并且在以下范围内:
date 类方法(classmethod):
date 类属性:
date 实例属性(只读):
属性 | 取值范围 |
date.year | MINYEAR ~ MAXYEAR(1 ~ 9999) |
date.month | 1 ~ 12 |
date.day | 1 ~ 根据 year 和 month 来决定(例如 2015年2月 只有 28 天) |
date 对象支持的操作:
操作 | 结果 |
date2 = date1 + timedelta | 日期加上一个时间间隔,返回一个新的日期对象(注1) |
date2 = date1 - timedelta | 日期减去一个时间间隔,相当于 date2 + timedelta == date1(注2) |
timedelta = date1 - date2 | (注3) |
date1 < date2 | 当 date1 的日期在 date2 之前时,我们认为 date1 < date2(注4) |
注1:timedelta.day > 0 或 timedelta.day < 0 决定 date2
日期增长的方向;随后,date2 - date1 == timedelta.days;timedelta.seconds 和
timedelta.microseconds 被忽略;如果 date2.year < MINYEAR 或 date2.year >
MAXYEAR,引发 OverflowError 异常
注2:这并不等同于 date1 + (-timedelta),因为单独的 -timedelta 可能会溢出,而 date1 - timedelta 则不会溢出;timedelta.seconds 和 timedelta.microseconds 被忽略
注3:这是准确的,并且不会溢出;timedelta.seconds 和 timedelta.microseconds 都为 0,然后 date2 + timedelta == date1
注4:换句话说,当且仅当 date1.toordinal() < date2.toordinal(),才有 date1 < date2
date 实例方法:
date.replace(year, month, day)
- 生成一个新的日期对象,用参数指定的年、月、日代替原有对象中的属性
date.timetuple()
- 返回日期对应的 time.struct_time 对象(类似于 time 模块的 time.localtime())
date.toordinal()
- 返回日期对应的 Gregorian Calendar 日期
date.weekday()
- 返回 0 ~ 6 表示星期几(星期一是 0,依此类推)
date.isoweekday()
- 返回 1 ~ 7 表示星期几(星期一是1, 依此类推)
date.isocalendar()
- 返回一个三元组格式 (year, month, day)
date.isoformat()
- 返回一个 ISO 8601 格式的日期字符串,如 "YYYY-MM-DD" 的字符串
date.__str__()
- 对于 date 对象 d 来说,str(d) 相当于 d.isoformat()
date.ctime()
- 返回一个表示日期的字符串,相当于 time 模块的 time.ctime(time.mktime(d.timetuple()))
date.strftime(format)
- 返回自定义格式化字符串表示日期,下面有详解
date.__format__(format)
- 跟 date.strftime(format) 一样,这使得调用 str.format() 时可以指定 data 对象的字符串
以下是计算天数的例子:
关于 date 的综合应用:
time 对象
time 对象表示一天中的一个时间,并且可以通过 tzinfo 对象进行调整
所有的参数都是可选的;tzinfo 可以是 None 或者 tzinfo 子类的实例对象;其余的参数可以是整数,并且在以下范围内:
注:如果参数超出范围,将引发 ValueError 异常
time 类属性
time 实例属性(只读):
属性 | 取值范围 |
time.hour | 0 ~ 23 |
time.minute | 0 ~ 59 |
time.second | 0 ~ 59 |
time.microsecond | 0 ~ 999999 |
time.tzinfo | 通过构造函数的 tzinfo 参数赋值 |
time 实例方法:
time.replace([hour[, minute[, second[, microsecond[, tzinfo]]]]])
- 生成一个新的时间对象,用参数指定时间代替原有对象中的属性
time.isoformat()
- 返回一个 ISO 8601 格式的日期字符串,如 "HH:MM:SS.mmmmmm" 的字符串
time.__str__()
- 对于 time 对象 t 来说,str(t) 相当于 t.isoformat()
time.strftime(format)
- 返回自定义格式化字符串表示时间,下面有详解
time.__format__(format)
- 跟 time.strftime(format) 一样,这使得调用 str.format() 时可以指定 time 对象的字符串
time.utcoffset()
- 如果 tzinfo 属性是 None,则返回 None;否则返回 self.tzinfo.utcoffset(self)
time.dst()
- 如果 tzinfo 属性是 None,则返回 None;否则返回 self.tzinfo.dst(self)
time.tzname()
- 如果 tzinfo 属性是 None,则返回 None;否则返回 self.tzinfo.tzname(self)
关于 time 的综合应用:
datetime 对象
datetime 对象是 date 对象和 time 对象的结合体,并且包含他们的所有信息
必须的参数是 year(年)、month(月)、day(日);tzinfo 可以是 None 或者 tzinfo 子类的实例对象;其余的参数可以是整数,并且在以下范围内:
注:如果参数超出范围,将引发 ValueError 异常
datetime 类方法(classmethod):
datetime.today()
- 返回一个表示当前本地时间的 datetime 对象,等同于 datetime.fromtimestamp(time.time())
datetime.now(tz=None)
- 返回一个表示当前本地时间的 datetime 对象;如果提供了参数 tz,则获取 tz 参数所指时区的本地时间
datetime.utcnow()
- 返回一个当前 UTC 时间的 datetime 对象
datetime.fromtimestamp(timestamp, tz=None)
- 根据时间戮创建一个 datetime 对象,参数 tz 指定时区信息
datetime.utcfromtimestamp(timestamp)
- 根据时间戮创建一个 UTC 时间的 datetime 对象
datetime.fromordinal(ordinal)
- 返回对应 Gregorian 日历时间对应的 datetime 对象
datetime.combine(date, time)
- 根据参数 date 和 time,创建一个 datetime 对象
datetime.strptime(date_string, format)
- 将格式化字符串转换为 datetime 对象
datetime 类属性:
datetime 实例属性(只读):
属性 | 取值范围 |
datetime.year | MINYEAR ~ MAXYEAR(1 ~ 9999) |
datetime.month | 1 ~ 12 |
datetime.day | 1 ~ 根据 year 和 month 来决定(例如 2015年2月 只有 28 天) |
datetime.hour | 0 ~ 23 |
datetime.minute | 0 ~ 59 |
datetime.second | 0 ~ 59 |
datetime.microsecond | 0 ~ 999999 |
datetime.tzinfo | 通过构造函数的 tzinfo 参数赋值 |
datetime 对象支持的操作:
操作 | 结果 |
datetime2 = datetime1 + timedelta | 日期加上一个时间间隔,返回一个新的日期对象(注1) |
datetime2 = datetime1 - timedelta | 日期减去一个时间间隔,相当于 datetime2 + timedelta == datetime1(注2) |
timedelta = datetime1 - datetime2 | 两个日期相减得到一个时间间隔(注3) |
datetime1 < datetime2 | 当 datetime1 的日期在 datetime2 之前时,我们认为 datetime1 < datetime2 |
注1:timedelta.day > 0 或 timedelta.day < 0 决定 datetime2
日期增长的方向;计算结果 datetime2 的 tzinfo 属性和 datetime1 相同;如果 date2.year <
MINYEAR 或 date2.year > MAXYEAR,引发 OverflowError 异常
注2:计算结果 datetime2 的 tzinfo 属性和 datetime1 相同;这并不等同于 date1 + (-timedelta),因为单独的 -timedelta 可能会溢出,而 date1 - timedelta 则不会溢出
注3:如果
datetime1 和 datetime2 的 tzinfo 属性一样(指向同一个时区),则 tzinfo 属性被忽略,计算结果为一个
timedelta 对象 t,则 datetime2 + t == datetime1(不用进行时区调整);如果 datetime1 和
datetime2 的 tzinfo 属性不一样(指向不同时区),则 datetime1 和 datetime2 会先被转换为 UTC
时区时间,在进行计算,(datetime1.replace(tzinfo=None) - datetime1.utcoffset()) -
(datetime2.replace(tzinfo=None) - datetime2.utcoffset())
datetime 实例方法:
datetime.date()
- 返回一个 date 对象datetime.time() - 返回一个 time 对象(tzinfo 属性为 None)
datetime.timetz()
- 返回一个 time() 对象(带有 tzinfo 属性)
datetime.replace([year[, month[, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]]]]])
- 生成一个新的日期对象,用参数指定日期和时间代替原有对象中的属性
datetime.astimezone(tz=None)
- 传入一个新的 tzinfo 属性,返回根据新时区调整好的 datetime 对象
datetime.utcoffset()
- 如果 tzinfo 属性是 None,则返回 None;否则返回 self.tzinfo.utcoffset(self)
datetime.dst()
- 如果 tzinfo 属性是 None,则返回 None;否则返回 self.tzinfo.dst(self)
datetime.tzname()
- 如果 tzinfo 属性是 None,则返回 None;否则返回 self.tzinfo.tzname(self)
datetime.timetuple()
- 返回日期对应的 time.struct_time 对象(类似于 time 模块的 time.localtime())
datetime.utctimetuple()
- 返回 UTC 日期对应的 time.struct_time 对象
datetime.toordinal()
- 返回日期对应的 Gregorian Calendar 日期(类似于 self.date().toordinal())
datetime.timestamp()
- 返回当前时间的时间戳(类似于 time 模块的 time.time())
datetime.weekday()
- 返回 0 ~ 6 表示星期几(星期一是 0,依此类推)
datetime.isoweekday()
- 返回 1 ~ 7 表示星期几(星期一是1, 依此类推)
datetime.isocalendar()
- 返回一个三元组格式 (year, month, day)
datetime.isoformat(sep=‘T‘)
- 返回一个 ISO 8601 格式的日期字符串,如 "YYYY-MM-DD" 的字符串
datetime.__str__()
- 对于 date 对象 d 来说,str(d) 相当于 d.isoformat()
datetime.ctime()
- 返回一个表示日期的字符串,相当于 time 模块的 time.ctime(time.mktime(d.timetuple()))
datetime.strftime(format)
- 返回自定义格式化字符串表示日期,下面有详解
datetime.__format__(format)
- 跟 datetime.strftime(format) 一样,这使得调用 str.format() 时可以指定 data 对象的字符串
关于 datetime 的综合应用:
带有 tzinfo 的 datetime 综合演示:
格式化字符串:strftime() 和 strptime()
date, datetime, 和 time 对象均支持使用 strftime(format) 方法,将指定的日期或时间转换为自定义的格式化字符串
相反的,datetime.strptime() 类方法却是把格式化字符串转换为 datetime 对象
格式化指令 | 含义 |
%a | 星期的简写(星期一 ~ 天:Mon, Tue, Wed, Thu, Fri, Sat, Sun) |
%A | 星期的全写(星期一 ~ 天:Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday) |
%w | 在一个星期中的第几天( 0 表示星期天 ... 6 表示星期六) |
%d | 在一个月中的第几天(01, 02, ..., 31) |
%b | 月份的简写(一月 ~ 十二月:Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec) |
%B | 月份的全写(一月 ~ 十二月:January, February, March, April, May, June, July, August, September, October, November, December) |
%m | 月份(01, 02, ..., 12) |
%y | 用两个数字表示年份(例如 2014年 == 14) |
%Y | 用四个数字表示年份 |
%H | 二十四小时制(00, 01, ..., 23) |
%I | 十二小时制(01, 02, ..., 11) |
%p | AM 或者 PM |
%M | 分钟(00, 01, ..., 59) |
%S | 秒(00, 01, ..., 59) |
%f | 微秒(000000, 000001, ..., 999999) |
%z | 与 UTC 时间的间隔 ;如果是本地时间,返回空字符串((empty), +0000, -0400, +1030) |
%Z | 时区名称;如果是本地时间,返回空字符串((empty), UTC, EST, CST) |
%j | 在一年中的第几天(001, 002, ..., 366) |
%U | 在一年中的第几周,星期天作为第一天(00, 01, ..., 53) |
%W | 在一年中的第几周,星期一作为第一天(00, 01, ..., 53) |
%c | 用字符串表示日期和时间(Tue Aug 16 21:30:00 2014) |
%x | 用字符串表示日期(08/16/14) |
%X | 用字符串表示时间(21:30:00) |
%% | 表示百分号 |
格式化字符串综合演示:
标签:nbsp 情况下 好的 lower erro cal 数字 时间转换 sunday
原文地址:https://www.cnblogs.com/fengff/p/9021117.html