• time、datetime、calendar


    time

    1.  Python中表示时间的方式

    l  时间戳

    l  格式化的时间字符串

    l  元组(struct_time)共九个元素。由于Python的time模块实现主要调用C库,所以各个平台可能有所不同。

    2.  UTC、时间戳、元组

    l  UTC(Coordinated Universal Time,世界协调时)亦即格林威治天文时间,世界标准时间。在中国为UTC+8。DST(Daylight Saving Time)即夏令时。

    l  时间戳(timestamp)的方式:通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。

    l  元组(struct_time)方式:struct_time元组共有9个元素,返回struct_time的函数主要有gmtime(),localtime(),strptime()。下面列出这种方式元组中的几个元素:

    索引(Index)    属性(Attribute)                         值(Values)

    0                       tm_year(年)                     比如2011

    1                       tm_mon(月)                       1 - 12

    2                       tm_mday(日)                   1 - 31

    3                       tm_hour(时)                    0 - 23

    4                       tm_min(分)                         0 - 59

    5                       tm_sec(秒)                          0 - 61

    6                       tm_wday(weekday)              0 - 6(0表示周日)

    7                       tm_yday(一年中的第几天)         1 - 366

    8                      tm_isdst(是否是夏令时)         默认为-1

    3.  模块属性

    1)      time.time()    

    #获取当前时间戳

    2)      time.gmtime(timestamp)     

    #将一个时间戳转换为UTC时区(0时区)的struct_time

    3)      time.localtime(timestamp)   

    #将一个时间戳转换为当前时区的struct_time

    4)      time.ctime(timestamp)

    #把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果参数未给或者为None的时候,将会默认time.time()为参数。它的作用相当于time.asctime(time.localtime(secs))。

    5)      time.asctime(struct_time)

    #把一个表示时间的元组或者struct_time表示为这种形式:'Sun Jun 20 23:21:05 1993'。如果没有参数,将会将time.localtime()作为参数传入。

    6)      time.mktime(struct_time)

    #将一个struct_time转化为时间戳

    7)      time.sleep(secs)

    #将线程推迟指定的时间运行。单位为秒。

    8)      time.clock()

    #这个需要注意,在不同的系统上含义不同。在UNIX系统上,它返回的是“进程时间”,它是用秒表示的浮点数(时间戳)。而在WINDOWS中,第一次调用,返回的是进程运行的实际时间。而第二次之后的调用是自第一次调用以后到现在的运行时间。(实际上是以WIN32上QueryPerformanceCounter()为基础,它比毫秒表示更为精确)

    9)      time.strftime("%a, %d %b %Y %H:%M:%S +0000", struct_time)

    把一个代表时间的元组或者struct_time(如由time.localtime()和time.gmtime()返回)转化为格式化的时间字符串。如果t未指定,将传入time.localtime()。如果元组中任何一个元素越界,ValueError的错误将会被抛出。

    10)   time.strptime("30 Nov 00", "%d %b %y")

    #把一个格式化时间字符串转化为struct_time。实际上它和strftime()是逆操作。

     

    备注:

    “%p”只有与“%I”配合使用才有效果。

    文档中强调确实是0 - 61,而不是59,闰年秒占两秒(汗一个)。

    当使用strptime()函数时,只有当在这年中的周数和天数被确定的时候%U和%W才会被计算。

    datetime

    1.  datetime模块定义了下面这几个类:

    datetime.date:表示日期的类。常用的属性有year, month, day;

    datetime.time:表示时间的类。常用的属性有hour, minute, second, microsecond;

    datetime.datetime:表示日期时间。

    datetime.timedelta:表示时间间隔,即两个时间点之间的长度。

    datetime.tzinfo:与时区有关的相关信息。

    名称比较绕口,在实际实用中,用得比较多的是 datetime.datetime 和 datetime.timedelta ,另外两个 datetime.date 和 datetime.time 实际使用和 datetime.datetime 并无太大差别。 下面主要讲讲 datetime.datetime 的使用。使用datetime.datetime.now()可以获得当前时刻的datetime.datetime 实例。 对于一个 datetime.datetime 实例,主要会有以下属性及常用方法,看名称就能理解,应该没有太大问题:

    1.     datetime.year

    2.     datetime.month

    3.     datetime.day

    4.     datetime.hour

    5.     datetime.minute

    6.     datetime.second

    7.     datetime.microsecond

    8.     datetime.tzinfo

    2.  模块属性

    1)   常量

    2)   date类

    date对象由year年份、month月份及day日期三部分构成date(year,month,day)

    a)    静态方法和字段

    date.max、date.min:date对象所能表示的最大、最小日期;

    date.resolution:date对象表示日期的最小单位。这里是天。

    date.today():返回一个表示当前本地日期的date对象;

    date.fromtimestamp(timestamp):根据给定的时间戮,返回一个date对象;

    b)   方法和属性

    d1 = date(2011,06,03)#date对象

    d1.year、date.month、date.day:年、月、日;

    d1.replace(year, month, day):生成一个新的日期对象,用参数指定的年,月,日代替原有对象中的属性。(原有对象仍保持不变)

    d1.timetuple():返回日期对应的time.struct_time对象;

    d1.weekday():返回weekday,如果是星期一,返回0;如果是星期2,返回1,以此类推;

    d1.isoweekday():返回weekday,如果是星期一,返回1;如果是星期2,返回2,以此类推;

    d1.isocalendar():返回格式如(year,month,day)的元组;

    d1.isoformat():返回格式如'YYYY-MM-DD’的字符串;

    d1.strftime(fmt):和time模块format相同。

    c)    date对象中包含的方法与属性

     

    以上方法的返回值为TrueFalse

    3)   time类

    time类由hour小时、minute分钟、second秒、microsecond毫秒和tzinfo五部分组成

    time([hour[, minute[, second[, microsecond[, tzinfo]]]]])

    a)    静态方法和字段

    time.min、time.max:time类所能表示的最小、最大时间。其中,time.min = time(0, 0, 0, 0), time.max = time(23, 59, 59, 999999);

    time.resolution:时间的最小单位,这里是1微秒;

    t1 = datetime.time(10,23,15)#time对象

    t1.hour、t1.minute、t1.second、t1.microsecond:时、分、秒、微秒;

    t1.tzinfo:时区信息;

    t1.replace([ hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] ):创建一个新的时间对象,用参数指定的时、分、秒、微秒代替原有对象中的属性(原有对象仍保持不变);

    t1.isoformat():返回型如"HH:MM:SS"格式的字符串表示;

    t1.strftime(fmt):同time模块中的format;

    b)   date对象中包含的方法与属性

     

    以上方法的返回值为TrueFalse

    4)   datetime类

    datetime类其实是可以看做是date类和time类的合体,其大部分的方法和属性都继承于这二个类,其数据构成也是由这二个类所有的属性所组成的:

    datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]])

    a)    静态方法和字段

    datetime.today():返回一个表示当前本地时间的datetime对象;

    datetime.now([tz]):返回一个表示当前本地时间的datetime对象,如果提供了参数tz,则获取tz参数所指时区的本地时间;

    datetime.utcnow():返回一个当前utc时间的datetime对象;#格林威治时间

    datetime.fromtimestamp(timestamp[, tz]):根据时间戮创建一个datetime对象,参数tz指定时区信息;

    datetime.utcfromtimestamp(timestamp):根据时间戮创建一个datetime对象;

    datetime.combine(date, time):根据date和time,创建一个datetime对象;

    datetime.strptime(date_string, format):将格式字符串转换为datetime对象;

    b)   方法和属性

    dt=datetime.now()#datetime对象

    dt.year、month、day、hour、minute、second、microsecond、tzinfo:

    dt.date():获取date对象;

    dt.time():获取time对象;

    dt. replace ([ year[ , month[ , day[ , hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] ] ] ]):

    dt. timetuple ()

    dt. utctimetuple ()

    dt. toordinal ()

    dt. weekday ()

    dt. isocalendar ()

    dt. isoformat ([ sep] )

    dt. ctime ():返回一个日期时间的C格式字符串,等效于time.ctime(time.mktime(dt.timetuple()));

    dt. strftime (format)

    5)   timedelta类

    timedelta类是用来计算二个datetime对象的差值的。

    此类中包含如下属性:

    1、days:天数

    2、microseconds:微秒数(>=0 并且 <1秒)

    3、seconds:秒数(>=0 并且 <1天)

    例子:

           today = datetime.date.today()

           today_weekday = today.isoweekday()

           last_sunday = today - datetime.timedelta(days=today_weekday)

           last_monday = last_sunday - datetime.timedelta(days=6)

    # datetime.timedelta(days=6)这个days可以换成hours,seconds,minutes,and so on。

    calendar

    calendar模块,即日历模块,提供了对日期的一些操作方法,和生成日历的方法。

    calendar模块中提供了三大类:

    一、calendar.Calendar(firstweekday=0)

    该类提供了许多生成器,如星期的生成器,某月日历生成器

    二、calendar.TextCalendar(firstweekday=0)

    该类提供了按月、按年生成日历字符串的方法。

    三、calendar.HTMLCalendar(firstweekday=0)

    类似TextCalendar,不过生成的是HTML格式日历

    calendar.calendar(year,w=2,l=1,c=6)

    #返回一个多行字符串格式的year年年历,3个月一行,间隔距离为c。 每日宽度间隔为w字符。每行长度为21* W+18+2* C。l是每星期行数。

    calendar.firstweekday( )

    #返回当前每周起始日期的设置。默认情况下,首次载入calendar模块时返回0,即星期一。

    calendar.isleap(year)

    #是闰年返回True,否则为false。

    calendar.leapdays(y1,y2)

    #返回在Y1,Y2两年之间的闰年总数。

    calendar.month(year,month,w=2,l=1)

    #返回一个多行字符串格式的year年month月日历,两行标题,一周一行。每日宽度间隔为w字符。每行的长度为7* w+6。l是每星期的行数。

    calendar.monthcalendar(year,month)

    #返回一个整数的单层嵌套列表。每个子列表装载代表一个星期的整数。Year年month月外的日期都设为0;范围内的日子都由该月第几日表示,从1开始。

    calendar.monthrange(year,month)

    #返回两个整数。第一个是该月的星期几的日期码,第二个是该月的日期码。日从0(星期一)到6(星期日);月从1到12。

    calendar.prcal(year,w=2,l=1,c=6)

    #相当于 print calendar.calendar(year,w,l,c).

    calendar.prmonth(year,month,w=2,l=1)

    #相当于 print calendar.calendar(year,w,l,c)。

    calendar.setfirstweekday(weekday)

    #设置每周的起始日期码。0(星期一)到6(星期日)。

    calendar.timegm(tupletime)

    #和time.gmtime相反:接受一个时间元组形式,返回该时刻的时间辍(1970纪元后经过的浮点秒数)。

    calendar.weekday(year,month,day)

    #返回给定日期的日期码。0(星期一)到6(星期日)。月份为 1(一月) 到 12(12月)。

  • 相关阅读:
    Redis从入门到精通:初级篇(转)
    Spring配置中的"classpath:"与"classpath*:"的区别研究(转)
    maven常用命令
    JUC-线程池调度-ScheduledThreadPool
    JUC-线程池
    JUC-线程八锁
    JUC-ReadWriteLock
    JUC-Condition和Lock实践-线程按序交替执行
    Linux 查看.so中导出函数
    nginx配置反向代理
  • 原文地址:https://www.cnblogs.com/windyrainy/p/10785464.html
Copyright © 2020-2023  润新知