范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

随心所欲地用Python处理时间

  来源:AI入门学习
  作者:小伍哥
  datetime模块提供了用于处理日期和时间的类和对应的方法,一般用于处理年、月、日、时、分、秒的统计和计算等需求。在支持日期时间数学运算的同时,实现的关注点更着重于如何能够更有效地解析其属性用于格式化输出和数据操作。
  学习该模块,首先要有一个概念:日期和时间,要不然会混乱,这里进行狭义的理解即可:日期是日期,时间是时间,日常生活中有时候并没有很好的去区分。
  日期:年月日,如 20210612
  时间:时分秒,如 20:45:50
  Python标准库中包含日期(date)和时间(time)的数据类型,还有日历方面的功能。要比较系统的学习该模块,需要了解下面的两个概念。
  UTC(全球标准时间): 是全球范围内计时的科学标准,它基于精心维护的原子钟,在全球范围内精确到微秒,由于英文(CUT)和法文(TUC)的缩写不同,作为妥协,简称UTC。作为全球最精确的时间系统,天文学家、航海家、"太空跟踪网"(DSN) 以及其他科学性学科都使用它,它的参考点是英国格林威治标准时间(GMT):地球本初子午线的午夜,也是 UTC 的午夜 (00:00:00.000000)。本地时间是根据地球上不同时区所处的位置调整 UTC 得来的,比如当美国加州的太平洋时间为正午 12:00:00 时,UTC 为 20:00:00。
  夏令时(DST): 表示为了节约能源, 人为规定时间的意思。也叫夏时制,夏时令(Daylight Saving Time:DST),又称"日光节约时制"和"夏令时间",在这一制度实行期间所采用的统一时间称为"夏令时间"。一般在天亮早的夏季人为将时间调快一小时,可以使人早起早睡,减少照明量,以充分利用光照资源,从而节约照明用电。各个采纳夏时制的国家具体规定不同。全世界有近110个国家每年要实行夏令时。
  感知型"和"简单型"对象: 日期和时间对象可以根据它们是否包含时区信息而分为"感知型"和"简单型"两类。充分掌握应用性算法和政治性时间调整信息例如时区和夏令时的情况下,一个 感知型 对象就能相对于其他感知型对象来精确定位自身时间点。感知型对象是用来表示一个没有解释空间的固定时间点。简单型对象没有包含足够多的信息来无歧义地相对于其他 date/time 对象来定位自身时间点。
  时间戳: Unix时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp) import time time.time() 1625483470.3409266一、datetime模块概
  Python内置的时间模块datetime包含下面的模块包含六个类和两个常数,提供了用于处理日期和时间的类和对应的方法,一般用于处理年、月、日、时、分、秒的统计和计算等需求,且这些类型的对象都是不可变的。最常用的是datetime.datetime ,有些人误以为就一个模块,其实是datetime模块下的datetime类。
  常量、类或方法名
  注解
  datetime.date
  一个理想化的简单型日期,它假设当今的公历在过去和未来永远有效。属性包含: year, month, day。
  datetime.time
  一个独立于任何特定日期的理想化时间,它假设每一天都恰好等于 24*60*60 秒。这里没有"闰秒"的概念) 包含属性:hour、minute、second、microsecond 、tzinfo。
  datetime.datetime
  是日期和时间的结合,属性包含year、month、day、hour、minute、second、 microsecond、 tzinfo.表示日期时间
  datetime.timedelta
  表示两个 date 对象或者 time 对象,或者 datetime 对象之间的时间间隔,精确到微秒。
  datetime.tzinfo
  一个描述时区信息对象的抽象基类。用来给datetime和time类提供自定义的时间调整概念(例如处理时区和/或夏令时)。
  datetime.timezone
  一个实现了tzinfo抽象基类的子类,用于表示相对于世界标准时间(UTC)的偏移量。
  datetime.MINYEAR
  常量,表示年份允许的最小值为1
  datetime.MAXYEAR
  常量,表示年份允许的最大值为9999
  书接上回,接着写 二、datetime.date类
  1、date类介绍
  作用: date类用来处理日期信息
  语法: date类是datetime的内嵌类,实例化语法:datetime.date(year, month, day)
  参数: year年份、month月份及day日期,所有参数都是必要的, 参数必须是在下面范围内的整数
  MINYEAR <= year <= MAXYEAR
  1 <= month <= 12
  1 <= day<= 给定年月对应的天数
  如果参数不在这些范围内,则抛出 ValueError 异常。 import datetimet = datetime.date(2019,8,26)print(type(t))print(t.day,t.month,t.year) # 26 8 2019
  通过内置函数dir,可以查看date类的所有方法和属性 from datetime import date print(dir(date)) ["ctime", "day", "fromisocalendar", "fromisoformat", "fromordinal",  "fromtimestamp", "isocalendar", "isoformat", "isoweekday", "max",  "min", "month", "replace", "resolution", "strftime", "timetuple",  "today", "toordinal", "weekday", "year"]
  2、类方法
  date.today()
  作用: 返回当前的本地日期,等价于date.fromtimestamp(time.time())。 from datetime import date date.today()datetime.date(2021, 7, 4)
  date.fromtimestamp()
  作用:返回对应于POSIX时间戳的当地时间,例如 time.time() 返回的就是时间戳。这可能引发 OverflowError,如果时间戳数值超出所在平台 C localtime() 函数的支持范围的话,并且会在 localtime() 出错时引发 OSError。通常该数值会被限制在 1970 年至 2038 年之间。请注意在时间戳概念包含闰秒的非 POSIX 系统上,闰秒会被 fromtimestamp() 所忽略。
  在 3.3 版更改: 引发 OverflowError 而不是 ValueError,如果时间戳数值超出所在平台 C localtime() 函数的支持范围的话,并会在 localtime() 出错时引发 OSError 而不是 ValueError。
  用法: date.fromtimestamp(timestamp) from datetime import date date.fromtimestamp(1339119900000/1e3).strftime("%Y-%m-%d %H:%M") "2012-06-07 00:00" date.fromtimestamp(1339120800000/1e3).strftime("%Y-%m-%d %H:%M") "2012-06-07 00:00"
  注意: unix时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。
  date.fromordinal()
  作用:返回对应于预期格列高利历序号的日期,其中公元 1 年 1 月 1 晶的序号为 1。
  用法:date.fromordinal(ordinal)from datetime import date d = date.fromordinal(730920) # 730920th day after 1. 1. 0001 d datetime.date(2002, 3, 11)
  date.fromisoformat()
  作用:返回一个对应于以 YYYY-MM-DD 格式给出的 date_string 的 date 对象
  用法:date.fromisoformat(date_string)from datetime import date date.fromisoformat("2019-12-04") datetime.date(2019, 12, 4)
  这是 date.isoformat() 的逆操作。它只支持 YYYY-MM-DD 格式。更通用的要用strptime d.isoformat() "2002-03-11"
  date.fromisocalendar()
  作用: 返回指定 year, week 和 day 所对应 ISO 历法日期的 date。这是函数 date.isocalendar() 的逆操作。
  用法:date.fromisocalendar(year, week, day)
  今年的42周第三天是10月20号date.fromisocalendar(2021, 42, 3) datetime.date(2021, 10, 20)
  3 、类属性
  date.min
  最小的日期 date(MINYEAR, 1, 1) 。 from datetime import date date.min datetime.date(1, 1, 1)
  date.max
  最大的日期 ,date(MAXYEAR, 12, 31)。 from datetime import date date.max datetime.date(9999, 12, 31)
  date.resolution
  两个日期对象的最小间隔,timedelta(days=1)。 from datetime import date date.resolution datetime.timedelta(days=1)
  date.year
  在 MINYEAR 和 MAXYEAR 之间,包含边界。 from datetime import date  d = date.today()#生成一个date对象 d datetime.date(2021, 7, 5) d.year 2021
  date.month
  1 至 12(含) #接上述案例 d.month 7
  date.day
  返回1到指定年月的天数间的数字。 #接上述案例 d.day 5
  3、实例方法
  date.replace()
  作用: 返回一个具有同样值的日期,除非通过任何关键字参数给出了某些形参的新值。
  用法: date.replace(year=self.year, month=self.month, day=self.day) from datetime import date d = date(2002, 12, 31) d.replace(day=26) datetime.date(2002, 12, 26)
  date.timetuple()
  作用: 返回一个 time.struct_time,即 time.localtime() 所返回的类型。hours, minutes 和 seconds 值均为 0,且 DST 旗标值为 -1。
  用法: date. timetuple (d) d = date(2002, 12, 31) date.timetuple(d) time.struct_time(tm_year=2002, tm_mon=12, tm_mday=31,  tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=365,  tm_isdst=-1)
  date.toordinal()
  作用: 返回日期的预期格列高利历序号,其中公元 1 年 1 月 1 日的序号为 1。对于任意 date 对象 d,date.fromordinal(d.toordinal()) == d。 d = date(1, 1, 1) d.toordinal() 1 d = date(2002, 12, 31) d.toordinal() 731215 date.fromordinal(d.toordinal()) datetime.date(2002, 12, 31)
  date.weekday()
  作用: 返回一个整数代表星期几,星期一为0,星期天为6。 date(2002, 12, 4).weekday() 2
  date.isoweekday()
  作用: 返回一个整数代表星期几,星期一为1,星期天为7。 date(2002, 12, 4).isoweekday() 3
  date.isocalendar()
  作用:返回一个由三部分组成的 named tuple 对象: year, week 和 weekday。
  ISO 历法是一种被广泛使用的格列高利历。ISO 年由 52 或 53 个完整星期构成,每个星期开始于星期一结束于星期日。一个 ISO 年的第一个星期就是(格列高利)历法的一年中第一个包含星期四的星期。这被称为 1 号星期,这个星期四所在的 ISO 年与其所在的格列高利年相同。
  例如,2004 年的第一天是星期四,因此 ISO 2004 年的第一个星期开始于 2003 年 12 月 29 日星期一,结束于 2004 年 1 月 4 日星期日.from datetime import date date(2003, 12, 29).isocalendar() (2004, 1, 1) # 旧版本 datetime.IsoCalendarDate(year=2004, week=1, weekday=1) # 新版本 date(2004, 1, 4).isocalendar() datetime.IsoCalendarDate(year=2004, week=1, weekday=7)
  在 3.9 版更改: 结果由元组改为 named tuple。
  date.isoformat()
  作用: 返回一个以 ISO 8601 格式 YYYY-MM-DD 来表示日期的字符串
  用法: date. isoformat (d) from datetime import date date(2021, 10, 1).isoformat() "2021-10-01"
  这是 date.fromisoformat() 的逆操作。
  date.__str__()
  作用: 对于日期对象 d, str(d) 等价于 d.isoformat() 。
  用法:date.__str__(d)from datetime import date date(2021, 10, 1).__str__() "2021-10-01" str(date(2021, 10, 1)) "2021-10-01"
  date.ctime()
  作用: 返回一个表示日期的字符串,在原生 C ctime() 函数 (time.ctime() 会发起调用该函数,但 date.ctime() 则不会) 遵循 C 标准的平台上。 from datetime import date date(2021, 10, 1).ctime() "Fri Oct  1 00:00:00 2021"
  d.ctime() 等效于 time.ctime(time.mktime(d.timetuple())) d=date(2021, 10, 1) import time time.ctime(time.mktime(d.timetuple())) "Fri Oct  1 00:00:00 2021"
  date.strftime()
  作用:翻译下就是 str from time ,将给定格式的日期时间对象转换为字符串。日期时间对象=>字符串 ,控制日期时间对象的输出格式,date、datetime、time对象都支持strftime(format) 方法,可用来创建由一个显式格式字符串所控制的表示时间的字符串。要获取格式指令的完整列表,查看文末列表。
  用法:date.strftime(format)
  掌握了这个方法,随心所以的转换日期格式import datetime dt=datetime.date(2021, 10, 1)#创建一个日期对象 dt.strftime("%Y-%m-%d") "2021-10-01" dt.strftime("%Y年%m月%d日") "2021年10月01日" dt.strftime("%Y//%m//%d") "2021//10//01" dt.strftime("%Y-%m-%d %H:%M") "2021-10-01 00:00" dt.strftime("%A, %d. %B %Y %I:%M%p") "Friday, 01. October 2021 12:00AM"
  date.__format__(format)
  与 date.strftime() 相同。此方法使得为 date 对象指定以 格式化字符串字面值 表示的格式化字符串以及使用 str.format() 进行格式化成为可能。虽然不建议使用这个装逼,但是遇到别人装逼的时候我们得知道。要获取格式指令的完整列表,请看文末附表 import datetimedt=datetime.date(2021, 10, 1) #创建一个日期对象dt.__format__("%Y年%m月%d日")"2021年10月01日"
  4、支持的运算
  date2 = date1 + timedelta
  date2 等于从 date1 减去 timedelta.days 天。(1)
  date2 = date1 - timedelta
  计算 date2 的值使得 date2 + timedelta == date1。(2)
  timedelta = date1 - date2
  (3)
  date1 < date2
  如果 date1 的时间在 date2 之前则认为 date1 小于 date2 。(4) 三、datetime.time类
  1、time类概述
  作用: 一个 time 对象代表某日的(本地)时间,它独立于任何特定日期,并可通过 tzinfo 对象来调整。
  语 法: datetime.time(hour=0, minute=0, second=0, microsecond=0,  tzinfo=None, *, fold=0)
  参 数:
  所有参数都是可选的,tzinfo 可以是 None,或者是一个 tzinfo 子类的实例。 其余的参数必须是在下面范围内的整数: 0 <= hour < 240 <= minute < 600 <= second < 600 <= microsecond < 1000000fold in [0, 1]
  如果给出一个此范围以外的参数,则会引发 ValueError。 所有参数值默认为 0,只有 tzinfo 默认为 None。
  通过内置函数dir,可以查看time类的所有方法和属性 from datetime import time print(dir(time)) ["dst", "fold", "fromisoformat", "hour", "isoformat", "max",  "microsecond", "min", "minute", "replace", "resolution",  "second", "strftime", "tzinfo", "tzname", "utcoffset"]
  2、time类属性
  time.min
  早最的可表示 time, time(0, 0, 0, 0)。 from datetime import time time.min datetime.time(0, 0)
  time.max
  最晚的可表示 time, time(23, 59, 59, 999999)。 from datetime import time time.max datetime.time(23, 59, 59, 999999)
  time.resolution
  两个不相等的 time 对象之间可能的最小间隔,timedelta(microseconds=1),但是请注意 time 对象并不支持算术运算。 from datetime import time time.resolution datetime.timedelta(microseconds=1)
  3、time类实例属性
  time.hour
  取值范围是 range(24)。 from datetime import time t = time(hour=12, minute=34, second=56, microsecond=123456) t.hour 12
  time.minute
  取值范围是 range(60)。 t.minute 34
  time.second
  取值范围是 range(60)。 t.second 56
  time.microsecond
  取值范围是 range(1000000)。 t.microsecond 123456
  time.tzinfo
  作为 tzinfo 参数被传给 time 构造器的对象,如果没有传入值则为 None。 t.tzinfo
  time.fold
  取值范围是 [0, 1]。 用于在重复的时间段中消除边界时间歧义。 (当夏令时结束时回拨时钟或由于政治原因导致当明时区的 UTC 时差减少就会出现重复的时间段。) 取值 0 (1) 表示两个时刻早于(晚于)所代表的同一边界时间。 t.fold 0
  4、time类实例方法
  time.replace()
  作用: 返回一个具有同样属性值的 time,除非通过任何关键字参数指定了某些属性值。
  语法: time.replace(hour=self.hour, minute=self.minute, second=self.second,
  microsecond=self.microsecond, tzinfo=self.tzinfo, *, fold=0) from datetime import time t = time(hour=12, minute=34, second=56, microsecond=123456) t.replace(hour=23, minute=12,) datetime.time(23, 12, 56, 123456)
  time.isoformat()
  作用: 返回表示为 ISO 8601 格式之一的时间字符串
  语法: time.isoformat(timespec="auto") from datetime import time t = time(hour=12, minute=34, second=56, microsecond=123456) t.isoformat() "12:34:56.123456"   t.isoformat(timespec="minutes") "12:34"   dt = time(hour=12, minute=34, second=56, microsecond=0) dt.isoformat(timespec="microseconds") "12:34:56.000000"   dt.isoformat(timespec="auto") "12:34:56"
  time.fromisoformat()
  作用: 返回对应于 time.isoformat() 所提供的某种 time_string 格式的 time。 特别地,此函数支持以下格式的字符串:HH[:MM[:SS[.fff[fff]]]][+HH:MM[:SS[.ffffff]]]
  语法: time.fromisoformat(time_string) time.fromisoformat("04:23:01") datetime.time(4, 23, 1)     time.fromisoformat("04:23:01.000384") datetime.time(4, 23, 1, 384)   time.fromisoformat("04:23:01+04:00") datetime.time(4,23,1, tzinfo=datetime.timezone(datetime.timedelta(seconds=14400)))
  time.__str__()
  作用: 对于时间对象 t, str(t) 等价于 t.isoformat()
  语法: time.__str__(t) from datetime import time t = time(hour=12, minute=34, second=56, microsecond=123456) time.__str__(t) "12:34:56.123456" str(t) "12:34:56.123456"
  time.strftime()
  作用: 时间->字符串 ,返回一个由显式格式字符串所指明的代表时间的字符串
  语法: time.strftime(format) from datetime import time t = time(hour=12, minute=3, second=56) t.strftime("%H:%M:%S") #用:分隔 "12:03:56" #用%分隔 t.strftime("%H%%%M%%%S") "12%03%56"
  time.__format__()
  作用: 与 time.strftime() 相同
  语法: time.__format__(format) from datetime import time t = time(hour=12, minute=3, second=56) t.__format__("%H:%M:%S") "12:03:56" t.__format__("%H%%%M%%%S") "12%03%56"
  time.utcoffset()
  作用: 如果 tzinfo 为 None,则返回 None,否则返回 self.tzinfo.utcoffset(None),并且在后者不返回 None 或一个幅度小于一天的 a timedelta 对象时将引发异常。
  time.dst()
  作用: 如果 tzinfo 为 None,则返回 None,否则返回 self.tzinfo.dst(None),并且在后者不返回 None 或者一个幅度小于一天的 timedelta 对象时将引发异常。
  time.tzname()
  作用: 如果 tzinfo 为 None,则返回 None,否则返回 self.tzinfo.tzname(None),如果后者不返回 None 或者一个字符串对象则将引发异常。 from datetime import time, tzinfo, timedelta class TZ1(tzinfo):      def utcoffset(self, dt):         return timedelta(hours=1)      def dst(self, dt):          return timedelta(0)      def tzname(self,dt):          return "+01:00"      def  __repr__(self):          return f"{self.__class__.__name__}()"   t = time(12, 10, 30, tzinfo=TZ1()) t datetime.time(12, 10, 30, tzinfo=TZ1()) t.isoformat() "12:10:30+01:00" t.dst() datetime.timedelta(0) t.tzname() "+01:00" t.strftime("%H:%M:%S %Z") "12:10:30 +01:00" "The {} is {:%H:%M}.".format("time", t) "The time is 12:10."四、datetime.datetime类
  1、datetime概述
  作用: date类可以同时获得日期和时间信息, datetime 对象是包含来自 date 对象和 time 对象的所有信息的单一对象。与 date 对象一样,datetime 假定当前的格列高利历向前后两个方向无限延伸;与 time 对象一样,datetime 假定每一天恰好有 3600*24 秒。
  语法: datetime.datetime(year, month, day, hour=0, minute=0, second=0,  microsecond=0, tzinfo=None, *, fold=0)
  参数: year, month 和 day 参数是必须的。 tzinfo 可以是 None 或者是一个 tzinfo 子类的实例。 其余的参数必须是在下面范围内的整数: MINYEAR <= year <= MAXYEAR,1 <= month <= 12,1 <= day <= 指定年月的天数,0 <= hour < 24,0 <= minute < 60,0 <= second < 60,0 <= microsecond < 1000000,fold in [0, 1].
  如果参数不在这些范围内,则抛出 ValueError 异常。
  注意: microsecond-微秒,百万分之一秒
  datetime类是date和time的结合体,包括date与time的所有信息,date和time类中具有的方法和属性,datetime类都具有。我们可以使用内置函数 dir查看该模块支持的方法print(dir(datetime.datetime)) [ "astimezone", "combine", "ctime", "date", "day", "dst", "fold",  "fromisoformat", "fromordinal", "fromtimestamp", "hour",  "isocalendar", "isoformat", "isoweekday", "max", "microsecond",  "min", "minute", "month", "now", "replace", "resolution", "second",  "strftime", "strptime", "time", "timestamp", "timetuple", "timetz",  "today", "toordinal", "tzinfo", "tzname", "utcfromtimestamp", "utcnow",  "utcoffset", "utctimetuple", "weekday", "year"]
  2、datetime类方法
  datetime.today()
  作用: 获取今天的时间,返回datetime对象,其中 tzinfo 为 None。 此方法的功能等价于 now(),但是不带 tz 形参。
  语法: datetime.datetime.today(tz=None ) from datetime import datetime datetime.today()  datetime.datetime(2021, 7, 5, 17, 58, 21, 359135)
  注: 359135,microsecond-微秒,百万分之一秒
  datetime.now()
  作用: 返回当前时间,返回datetime对象。
  语法: datetime.datetime.now(tz=None ) from datetime import datetime #获取现在时间 datetime.now() datetime.datetime(2021, 6, 27, 21, 59, 53, 950783) #调整下格式 datetime.now().strftime("%Y-%m-%d %H:%M:%S") "2021-06-27 22:01:49"
  datetime.utcnow()
  作用: 返回表示当前 UTC 时间的 date 和 time,其中 tzinfo 为 None。
  语法: datetime.utcnow()from datetime import datetime datetime.utcnow() datetime.datetime(2021, 7, 6, 2, 46, 7, 229768) datetime.now() datetime.datetime(2021, 7, 6, 10, 46, 3, 67817)
  可以看到,now()与相差了差不多8小时
  datetime.fromtimestamp()
  作用:  将 时间戳 表示为本地时间的简单 日期时间对象 ,  如果可选参数 tz 为 None 或未指定,时间戳会被转换为所在平台的本地日期和时间,返回的 datetime 对象将为天真型。
  语法: datetime.datetime.fromtimestamp(timestamp, tz=None)import time import datetime tt = time.time() tt 1625542045.2471695 datetime.datetime.fromtimestamp(tt) datetime.datetime(2021, 7, 6, 11, 27, 25, 247169) #取整数后,精确到秒,否则精确到微秒,一微秒=百万分之一秒 datetime.datetime.fromtimestamp(1625542045) datetime.datetime(2021, 7, 6, 11, 27, 25) #例如,使用日期2008-12-27午夜UTC(自纪元起40*356*86400秒) datetime.datetime.fromtimestamp(40 * 356 * 86400) datetime.datetime(2008, 12, 27, 1, 0)
  datetime.utcfromtimestamp()
  作用: 将 时间戳 表示为本地时间的UTC 日期时间对象
  语法: datetime.datetime.utcfromtimestamp(timestamp)import datetime #获取本地当前时间 dt=datetime.datetime.now()   #获取时间戳     dt.timestamp()   1625549035.048533 datetime.datetime.utcfromtimestamp(dt.timestamp()) datetime.datetime(2021, 7, 6, 5, 23, 55, 48533)
  datetime.fromordinal()
  作用: 返回对应于预期格列高利历序号的 datetime,其中公元 1 年 1 月 1 日的序号为 1。 除非 1 <= ordinal <= datetime.max.toordinal() 否则会引发 ValueError。 结果的 hour, minute, second 和 microsecond 值均为 0,并且 tzinfo 值为 None。
  语法: datetime.fromordinal(ordinal)datetime.datetime.fromordinal(730920) datetime.datetime(2002, 3, 11, 0, 0)
  datetime.combine()
  作用: 返回一个date对象和一个time对象合成的date对象,  如果提供了 tzinfo 参数,其值会被用来设置结果的 tzinfo 属性,否则将使用 time 参数的 tzinfo 属性。
  语法: datetime.combine(date, time, tzinfo=self.tzinfo)d = date(2005, 7, 14) t = time(12, 30) datetime.combine(d, t) datetime.datetime(2005, 7, 14, 12, 30)
  对于任意 datetime 对象 d,d = datetime.combine(d.date(), d.time(), d.tzinfo)。 如果 date 是一个 datetime 对象,它的时间部分和 tzinfo 属性会被忽略。
  datetime.fromisoformat()
  作用: 返回一个对应于 date.isoformat() 和 datetime.isoformat() 所提供的某一种 date_string 的 datetime 对象。 特别地,此函数支持以下格式的字符串:YYYY-MM-DD[*HH[:MM[:SS[.fff[fff]]]][+HH:MM[:SS[.ffffff]]]],其中 * 可以匹配任意的单个字符。
  语法: datetime.fromisoformat(date_string)from datetime import datetime datetime.fromisoformat("2011-11-04") datetime.datetime(2011, 11, 4, 0, 0)   datetime.fromisoformat("2011-11-04T00:05:23") datetime.datetime(2011, 11, 4, 0, 5, 23)   datetime.fromisoformat("2011-11-04 00:05:23.283") datetime.datetime(2011, 11, 4, 0, 5, 23, 283000)   datetime.fromisoformat("2011-11-04 00:05:23.283+00:00") datetime.datetime(2011, 11, 4, 0, 5, 23, 283000, tzinfo=datetime.timezone.utc)   datetime.fromisoformat("2011-11-04T00:05:23+04:00")    datetime.datetime(2011, 11, 4, 0, 5, 23, tzinfo=datetime.timezone(datetime.timedelta(seconds=14400)))
  datetime.fromisocalendar()
  作用: 返回以 year, week 和 day 值指明的 ISO 历法日期所对应的 datetime。 该datetime 对象的非日期部分将使用其标准默认值来填充。 这是函数 datetime.isocalendar() 的逆操作。
  语法: datetime.fromisocalendar(year, week, day)from datetime import datetime datetime.fromisocalendar(2021, 10, 1)  datetime.datetime(2021, 3, 8, 0, 0)
  datetime.strptime()
  作用: 按照特定时间格式将字符串转换(解析)为时间类型。返回一个由显式格式字符串所指明的代表时间的字符串。 要获取格式指令的完整列表,请参阅 strftime() 和 strptime() 的行为。
  语法: datetime.strptime(date_string, format)dt = datetime.strptime("21/11/06 16:30", "%d/%m/%y %H:%M") dt datetime.datetime(2006, 11, 21, 16, 30)
  3、类属性
  datetime.min
  最早的可表示 datetime,datetime(MINYEAR, 1, 1, tzinfo=None)。 from datetime import datetime datetime.min datetime.datetime(1, 1, 1, 0, 0)
  datetime.max
  最晚的可表示 datetime, datetime(MAXYEAR, 12, 31, 23, 59, 59, 999999, tzinfo=None)。 from datetime import datetime datetime.max datetime.datetime(9999, 12, 31, 23, 59, 59, 999999)
  datetime.resolution
  两个不相等的 datetime 对象之间可能的最小间隔,timedelta(microseconds=1)。 from datetime import datetime datetime.resolution datetime.timedelta(microseconds=1)
  4、实例属性-只读
  datetime.year
  在 MINYEAR 和 MAXYEAR 之间,包含边界。 from datetime import datetime datetime(2021,5,20,13,14,0,0).year 2021
  datetime.month
  1 至 12(含) from datetime import datetime datetime(2021,5,20,13,14,0,0).month 5
  datetime.day
  返回1到指定年月的天数间的数字。 from datetime import datetime datetime(2021,5,20,13,14,0,0).day 20
  datetime.hour
  取值范围是 range(24)。 from datetime import datetime datetime(2021,5,20,13,14,0,0).hour 13
  datetime.minute
  取值范围是 range(60)。 from datetime import datetime datetime(2021,5,20,13,14,0,0).minute 14
  datetime.second
  取值范围是 range(60)。 from datetime import datetime datetime(2021,5,20,13,14,0,0).second 0
  datetime.microsecond
  取值范围是 range(1000000)。 from datetime import datetime datetime(2021,5,20,13,14,0,0).microsecond 0
  datetime.tzinfo
  作为 tzinfo 参数被传给 datetime 构造器的对象,如果没有传入值则为 None。 from datetime import datetime datetime(2021,5,20,13,14,0,0).fold
  datetime.fold
  取值范围是 [0, 1]。 用于在重复的时间段中消除边界时间歧义。 (当夏令时结束时回拨时钟或由于政治原因导致当明时区的 UTC 时差减少就会出现重复的时间段。) 取值 0 (1) 表示两个时刻早于(晚于)所代表的同一边界时间。 from datetime import datetime datetime(2021,5,20,13,14,0,0).fold 0
  5、datetime实例方法
  datetime.date()
  作用: 返回具有同样 year, month 和 day 值的 date 对象。
  用法: datetime.date() datetime(2021,5,20,13,14,0,0).date() datetime.date(2021, 5, 20)
  datetime.time()
  作用: 返回具有同样 hour, minute, second, microsecond 和 fold 值的 time 对象。 tzinfo 值为 None。 另请参见 timetz() 方法。
  用法: datetime.time() datetime(2021,5,20,13,14,0,0).time() datetime.time(13, 14)
  datetime.timetz()
  作用: 返回具有同样 hour, minute, second, microsecond, fold 和 tzinfo 属性性的 time 对象。 另请参见 time() 方法。
  用法: datetime.timetz() datetime(2021,5,20,13,14,0,0).timetz() datetime.time(13, 14)
  datetime.replace()
  作用: 返回一个具有同样属性值的 datetime,除非通过任何关键字参数为某些属性指定了新值。 请注意可以通过指定 tzinfo=None 来从一个感知型 datetime 创建一个简单型 datetime 而不必转换日期和时间数据。
  用法: datetime.replace(year=self.year, month=self.month, day=self.day, hour=self.hour,
  minute=self.minute, second=self.second, microsecond=self.microsecond, tzinfo=self.tzinfo, *, fold=0) from datetime import datetime datetime(2021,5,20,13,14,0,0).replace(year=2035, month=12) datetime.datetime(2035, 12, 20, 13, 14)
  datetime.astimezone()
  作用: 返回一个具有新的 tzinfo 属性 tz 的 datetime 对象,并会调整日期和时间数据使得结果对应的 UTC 时间与 self 相同,但为 tz 时区的本地时间。
  用法: datetime.astimezone(tz=None) def astimezone(self, tz):     if self.tzinfo is tz:         return self     # Convert self to UTC, and attach the new time zone object.     utc = (self - self.utcoffset()).replace(tzinfo=tz)     # Convert from UTC to tz"s local time.     return tz.fromutc(utc)
  datetime.timetuple()
  返回一个 time.struct_time,即 time.localtime() 所返回的类型。 from datetime import datetime datetime(2021,5,20,13,14,0,0).timetuple() time.struct_time(tm_year=2021, tm_mon=5, tm_mday=20, tm_hour=13,  tm_min=14, tm_sec=0, tm_wday=3, tm_yday=140, tm_isdst=-1)
  datetime.utctimetuple()
  作用:如果 datetime 实例 d 为简单型,这类似于 d.timetuple(),不同之处在于 tm_isdst 会强制设为 0,无论 d.dst() 返回什么结果。 DST 对于 UTC 时间永远无效。返回UTC时间元组
  语法: datetime对象.utctimetuple() from datetime import datetime datetime(2021,5,20,13,14,0,0).utctimetuple() time.struct_time(tm_year=2021, tm_mon=5, tm_mday=20, tm_hour=13,        tm_min=14, tm_sec=0, tm_wday=3, tm_yday=140, tm_isdst=0)
  datetime.toordinal()
  作用: 返回日期的预期格列高利历序号。 与 self.date().toordinal() 相同。
  用法: datetime.toordinal() datetime(2021, 5, 4).toordinal() 737914
  datetime.timestamp()
  作用: 返回对应于 datetime 实例的 POSIX 时间戳。 此返回值是与 time.time() 返回值类似的 float 对象。
  用法: datetime.timestamp() from datetime import datetime datetime(2021, 5, 4).timestamp() 1620057600.0
  datetime.weekday()
  作用: 返回一个整数代表星期几,星期一为 0,星期天为 6。 相当于 self.date().weekday()。 另请参阅 isoweekday()。
  用法: datetime.weekday() import datetime datetime.datetime(2021, 5, 4).weekday() 1
  datetime.isoweekday()
  作用: 返回一个整数代表星期几,星期一为 1,星期天为 7。 相当于 self.date().isoweekday()。 另请参阅 weekday(), isocalendar()。
  用法: datetime.isoweekday() import datetime datetime.datetime(2021, 5, 4).isoweekday() 2
  datetime.isocalendar()
  作用: 返回一个由三部分组成的元组: year, week 和 weekday,哪一年、第几周和、周几 , 等同于 self.date().isocalendar()。
  用法: datetime.isocalendar() import datetime dt = datetime.datetime.now() print(dt) 2021-07-06 14:22:35.920877 dt.isocalendar() (2021, 27, 2)
  datetime.isoformat()
  作用: 返回一个以 ISO 8601 格式表示的日期和时间字符串
  用法: datetime.isoformat(sep="T", timespec="auto") from datetime import datetime, timezone datetime(2019, 5, 18, 15, 17, 8, 132263).isoformat() "2019-05-18T15:17:08.132263" datetime(2019, 5, 18, 15, 17, tzinfo=timezone.utc).isoformat() "2019-05-18T15:17:00+00:00"
  datetime.__str__()
  作用: 对于 datetime 实例 d,str(d) 等价于 d.isoformat(" ")。
  语法: datetime.__str__(d) from datetime import datetime # __str__ datetime.__str__(datetime(2019, 5, 18, 15, 17, 8, 132263)) "2019-05-18 15:17:08.132263" # str str(datetime(2019, 5, 18, 15, 17, 8, 132263)) "2019-05-18 15:17:08.132263"
  datetime.ctime()
  作用: 返回一个表示日期和时间的字符串,输出字符串将 并不 包括时区信息,无论输入的是感知型还是简单型。
  用法: datetime.ctime() from datetime import datetime datetime(2002, 12, 4, 20, 30, 40).ctime() "Wed Dec  4 20:30:40 2002" #d.ctime() 等效于: time.ctime(time.mktime(d.timetuple()))
  在原生 C ctime() 函数 (time.ctime() 会发起调用该函数,但 datetime.ctime() 则不会) 遵循 C 标准的平台上。
  datetime.strftime()
  作用: 将给定格式的日期时间对象转换为字符串。 日期时间对象=>字符串,控制日期时间对象的输出格式, date、datetime、time对象都支持strftime(format) 方法,可用来创建由一个显式格式字符串所控制的表示时间的字符串。要获取格式指令的完整列表,查看文末列表。
  用法: datetime.strftime(format) import datetime dt=datetime.datetime(2006, 11, 21, 16, 30) dt.strftime("%Y-%m-%d %H:%M") "2006-11-21 16:30"   dt.strftime("%Y-%m-%d") "2006-11-21"   dt.strftime("%A, %d. %B %Y %I:%M%p") "Tuesday, 21. November 2006 04:30PM"
  对比:
  str f ti me: 将给定格式的日期时间对象转换为字符串。日期时间对象=>字符串,控制输出格式
  str p time:将字符串解析为给定格式的日期时间对象。字符串=>日期时间对象,解析字符串
  str  f  time
  str  p  time
  用法
  根据给定的格式将对日期时间象转换为字符串
  将字符串解析为给定相应格式的datetime 对象
  类型
  实例方法
  类方法
  方法
  date; datetime; time
  datetime
  用法
  strftime(format)
  strptime(date_string, format)
  示例
  datetime.datetime(2006, 11, 21, 16, 30)  =>  "2006-11-21 16:30"
  "21/11/06 16:30"  =>  datetime.datetime(2006, 11, 21, 16, 30)
  datetime.__format__()
  作用: 与 datetime.strftime() 相同。
  语法:datetime.__format__(format)import datetime dt=datetime.datetime(2006, 11, 21, 16, 30) dt.__format__("%Y-%m-%d %H:%M") "2006-11-21 16:30"

三星官翻机Note20Ultra评测,手握一块超大屏是什么体验正值S22系列上市,此次Note系列的经典标志在S22Ultra上面得到重现,而GalaxyNote20Ultra也从当初上市时的9000多售价,到现在回落到平稳价格。如果你是No48伏电容麦克风为什么售价高达几万元我查看过很多电容麦内部的电路板,电路板纯成本在10元50元之间,再好的电容麦的电子元件成本价也不可能超过200元。(不包括34mm振膜)所谓的高档专业电容麦都是采用双面电路板的元件华为Mate50X大规模量产,5500mAhHarmonyOS3,销量要爆了可能目前国产手机品牌中比较焦灼的就是华为了!因为小米OV荣耀苹果三星等都在不断发布5G新机,但我们看到因为受制于禁令,所以华为的新机迟迟未来。不过阴霾终将散去,毕竟华为做手机的实力网易云也可以倍速播放了,我不理解最近,网易云音乐手机端迎来了版本更新,iOS版升级到8。7。0版本后,新增了无缝播放概念专辑。据了解,无缝播放功能可以消除歌曲切换之间的卡顿,让上一首歌结束后进入下一首播放更加流畅游戏玩家的新选择PXNSenseBudsX2真无线降噪耳机Dongle版PXN莱仕达一个以游戏外设为主的品牌,自2004年成立至今,带来了众多专业的游戏设备,受到了游戏玩家们的喜爱与好评。最近推出的新品PXNSenseBudsX2真无线降噪耳机Dong2021智能手机收入排行榜国产品牌中OPPO排名首位日前,行业知名数据分析公司Counterpoint公布了2021年全球智能手机市场收入情况,苹果凭借44市场占有率与1960亿美元的总收入排名首位,实现了智能手机行业的全面领跑。在42岁了,还能自己创业吗?如果是创业,也一定是轻资产,就是投入一定要少,运营的成本也要低,就像在头条上创作,不过前期好像没有什么收入,但坚持下去,或许有转机,这只是举个例子总之,一定不能够投入很大的去创业,苹果在俄停售并关闭部分功能,您会继续使用还是改用国产替代?事件回顾由于俄乌双方冲突,以大米国为首的西方国家纷纷对俄毛国进行经济制Cai,而在科技圈,苹果在3月1日也发布了一份声明,主要内容有以下几点1暂停在俄销售苹果产品,一句话,咱不卖了外卖平台费率改革逐渐深入美团饿了么相继发布佣金优惠措施财联社新消费日报(记者李丹昱)讯,3月2日,饿了么宣布首批投入2000万现金,对今年12月所有被列为疫情中高风险区的全国87个区县的所有商家减免佣金,并承诺相关举措3月后还将延续。工信部扎实推进5G千兆光网数据中心工业互联网车联网等建设应用南方财经3月2日电,3月1日,工业和信息化部副部长张云明出席2022中国互联网发展座谈会并讲话。张云明指出,一是做新型基础设施建设的推动者。扎实推进5G千兆光网数据中心工业互联网车百里挑一!这四款良心软件,好用到你不想卸载ColdTurkey天将降大任于斯人也,必先关其手机,收其平板,拔其网线。这应该就是,大多数网虫的现状吧。ColdTurkey当我们想专注地去做某一件事情时,总会发现,我们无法第一
机械键盘的奇葩脑回路,樱桃RGB轴配单色灯机械键盘已高度普及的一个现象就是非专业厂商越来越多的涉及外设行业,海尔旗下的机械师作为笔记本品牌,也交上了自己的键盘作业,而且带来了奇葩思路。这款258元即能到手的K2机械键盘,采低价热升华主题樱桃轴机械键盘,美心小恶魔633大键手感美心Maxin,很多人可能不熟悉,这也是一家有年头的专业外设厂商,在DIY攒机很火的年代,它的机箱和键鼠套装都是渠道的热门产品之一。随着外设之争逐步转向电商,以工厂为主的他们选择专验证手感传言的真伪,杜伽K320大键测试与分析DURGOD杜伽,我们多次在网上看到关于它的评价不低,多数是在手感和做工,尤其是手感。这让我们想起了曾经体验过一个半价大F的酷冷MasterkeyL,它名声大噪比杜伽更早。虽然说杜为什么比一般红轴重,LEOPOLD石墨金FC980MPD的手感特点分析LEOPOLD是来自韩国,因为母公司和日本Topre公司(旗下品牌Realforce)的代理合作,自己的品牌意识也开始觉醒,在早些年经历过国内代工的挫折之后,全系转为MadeinT华人运通领跑智能汽车行业大势,三智战略与国家战略高度契合实力二字是各行各业各领域都通行的通关符,比如在汽车领域,实力的比拼一直存在,从最开始的发动机,到底盘,到造型和内饰,各大厂家百年来都在不断竞逐,而最近,汽车产品实力比拼的焦点,正向老司机开手动档车的时候,为什么喜欢选择在一档熄火?上坡熄火挂一挡,下坡熄火挂倒挡都是玩转手动挡车的小技巧,实际上还有一句就是坡度太陡垫石块,这都是过去咱们很多朋友玩手动挡车的习惯实际上机械式手刹(拉线)每在使用一段时间之后就会变得神州租车,000000随着疫情逐渐得到控制,很多地方都已经开始陆陆续续的复工复产。不过,虽然已经实现复工复产,但是依旧不能掉以轻心。少聚集少接触依旧是不变的准则,所以,自驾出行成为了这个开工季最安全也最我的旅行新宠,荣耀MagicBook16Pro,大屏轻薄本标杆,直升Win11作为一个环球旅行家,我这些年环游地球的脚步从未停止过,一年365天,可能有300多天都在世界各地观赏不一样的风景。2019,我在巴厘岛徒步在乌伦古湖冬捕在塞尔维亚踏雪在马尔丁住石头电视回音壁怎么选?5000元就能买到旗舰款我其实很早就想买回电视音壁了,一直没下定决定,就是觉得贵回音壁这玩意比电脑音箱贵太多了吧?电脑音箱两千元的已经算说得过去了,电视回音壁一两千的也就比电视声音大些。价钱只有至少翻个三性价比燃爆,腾讯怪奇鹅定制蓝牙耳机,音乐高音质王者低延迟游戏圈哪款游戏最火爆?想都不用想,一定是腾讯的王者荣耀了,风头无两啊。可打游戏时如果耳机声音有延迟,势必影响战绩。再加上作为国内曲库最全的QQ音乐,已经让不少朋友养成了爱听歌的习惯爆改厨房净水,让颜值与口感一同提升一目前厨房问题点一直觉得我家颜值最低的地方,恩,不是我,是我家的水槽这块。当初装修时,觉得双槽分类清晰,所以水槽选了双槽,没想到用起来,反而会施展不开,尤其是锅具,根本放不进去,只