PHP直播源码日期和时间

time模块

time函数
import time
now = time.time()
print(now)

time函数用于返回当前时间的时间戳,返回的是浮点数

localtime函数
import time
print("当前时间是",time.localtime())
print("0时间戳对应的时间是",time.localtime(0))

结果:

当前时间是 time.struct_time(tm_year=2020, tm_mon=2, tm_mday=2, tm_hour=14, tm_min=55, tm_sec=20, tm_wday=6, tm_yday=33, tm_isdst=0)
0时间戳对应的时间是 time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)

localtime函数的目的是将时间戳格式化为本地时间,返回struct_time对象(时间元组),localtime有一个参数用于接收时间戳,如果不提供参数会默认使用当前时间戳。

mktime函数

import time
t = (2018,7,17,17,3,1,1,1,0)
secs = time.mktime(t)
print(secs)
print(time.mktime(time.localtime()))

结果:

1531818181.0
1580627162.0

mktime执行与gmtime,localtime相反的操作,他接受struct_time对象作为参数,返回用秒数表示时间的浮点数,mktime的参数可以是结构化的时间也可以是完整的9位元组元素。

gmtime函数
import time
print(time.gmtime())
print(time.gmtime(0))

结果:

time.struct_time(tm_year=2020, tm_mon=2, tm_mday=2, tm_hour=7, tm_min=12, tm_sec=59, tm_wday=6, tm_yday=33, tm_isdst=0)
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)

gmtime函数将一个时间戳转换为UTC(0时区)的struct_time。

asctime函数

import time
t = (2018,7,17,17,3,1,1,1,0)
print(time.asctime(t))
print(time.asctime(time.localtime()))

结果:

Tue Jul 17 17:03:01 2018
Sun Feb  2 15:19:27 2020

asctime函数接收时间元组并返回一个可读形式的24个字符的字符串。

ctime函数
import time
print(time.ctime())
print(time.ctime(0))

结果:

Sun Feb  2 15:27:40 2020
Thu Jan  1 08:00:00 1970

ctime函数能把一个时间戳转换为time.asctime()的形式。

sleep函数

import time
print(time.ctime())
time.sleep(10)
print(time.ctime())

结果:

Sun Feb  2 15:33:05 2020
Sun Feb  2 15:33:15 2020

sleep函数可以推迟调用线程的运行

clock函数

import time
def process():
    time.sleep(10)
print(time.clock())
process()
print(time.clock())

结果:

2e-07
10.0002993

clock函数以浮点数计算的秒数返回当前CPU时间,用来衡量不同程序的消耗。
需要注意的是,在不同系统上clock函数的含义不同,在Unix系统上,他返回的是进程时间,是用秒表示的浮点数(时间戳);而在Windows系统中,第一次调用时返回的是进程运行实际时间,而之后的第二次调用返回的是第一次调用以后到现在的运行时间。

strftime函数

import time
print(time.strftime("%b %d %Y %H:%H:%S",time.localtime()))

结果:

Feb 02 2020 16:16:53

strfttime函数用于接收时间元组,并返回以可读字符串表示的当地时间,格式由format函数决定

strpttime函数

import time
s = time.strptime("Jul 17 2018 09:03:01","%b %d %Y %H:%M:%S")
print(s)

strpttime函数能够根据指定的格式把一个时间字符串解析为时间元组
注:上述两个函数正好能够相互转换

datetime模块
datetime模块包含了日期和时间的所有信息,他的功能十分强大,支持从0001到9999年之间的日期

date对象
date的构造函数

import datetime
date = datetime.date(2018,12,9)
print(date)

结果:

time.struct_time(tm_year=2018, tm_mon=7, tm_mday=17, tm_hour=9, tm_min=3, tm_sec=1, tm_wday=1, tm_yday=198, tm_isdst=-1)

date对象的构造函数需要三个函数year,month,day。

import datetime
today = datetime.date.today()#today方法返回当天日期
print("今天的日期是",today)
print("今天的星期数",today.weekday())#weekday方法返回当前星期数,若是星期一返回0,以此类推
print("今天的星期数",today.isoweekday())#和上个方法相同,若是星期一返回1
print("返回日期为ISO格式"+today.isoformat())#isoformat方法返回日期为ISO格式,即“YYYY-MM-DD”,直接打印date就是该格式
#strftime方法可以格式化输出日期
print("格式化"+today.strftime("%Y-%m-%d"))
print("格式化"+today.strftime("%y-%b-%d"))

time对象
time对象表示一天中的(本地)时间,与任何特定日期无关

import datetime
time = datetime.time()
print(time)
time1 = datetime.time(hour=8,second=7)#time对象的构造函数接收时,分,秒,微妙,时区和信息等参数,并且所有参数都是可选的
print(time1)
#time对象有两个常量min和max,分别对应两个time实例来表示time支持的最大值和最小值
print(datetime.time.min)
print(datetime.time.max)
#isoformat返回时间为ISO格式,即“HH:MM:SS”
print(time1.isoformat())#直接打印出time对象调用的就是isoformat方法
#strftime方法可以格式化输出时间
print(time1.strftime("%H:%M:%S"))
print(time1.strftime("%p %I:%M:%S:%f"))

结果:

E:\anewproject\venv\Scripts\python.exe E:/anewproject/python.py
00:00:00
08:00:07
00:00:00
23:59:59.999999
08:00:07
08:00:07
AM 08:00:07:000000

Process finished with exit code 0

datatime对象
datetime是date和time的结合体,包括date和time的所有信息(常用的时间处理就是datetime)

import datetime
import time
dt = datetime.datetime(year = 2018,month=7,day=1,hour=16,second=10)#需要注意的是年,月,日三个参数是必须的,其余参数是可选的
print(dt)
today = datetime.datetime.today()#返回当前本地时间的datetime对象
print(today)
now = datetime.datetime.now()#如果提供参数则返回所指时区的本地时间,不传递和today相同
print(now)
now1 = datetime.datetime.utcnow()#返回一个当前UTC时间的datetime对象
print(now1)
t1 = datetime.datetime.fromtimestamp(time.time())#根据时间戳创建一个datetime对象,可选参数指定时区信息
print(t1)
print(now.date())#获取date对象
print(now.time())#获取time对象
date = datetime.date(2020,2,2)
time = datetime.time(7,9,33)
dt1 = datetime.datetime.combine(date,time)
print(dt1.strftime("%Y-%m-%d %H:%M:%S"))#格式化输出时间日期
print(dt1.strftime("%y-%m-%d %a %I:%M:%S"))

结果:

E:\anewproject\venv\Scripts\python.exe E:/anewproject/python.py
2018-07-01 16:00:10
2020-02-02 20:06:34.815875
2020-02-02 20:06:34.815875
2020-02-02 12:06:34.815875
2020-02-02 20:06:34.815875
2020-02-02
20:06:34.815875
2020-02-02 07:09:33
20-02-02 Sun 07:09:33

Process finished with exit code 0

Timedelta对象
timedelta表示的是两个日期或时间的差,属性包含:日期,秒,微妙,毫秒,分钟,小时和星期,所有属性都可以选择,并且默认值是0

import datetime
dt1 = datetime.datetime(2018,7,1,16,15,10)
dt2 = dt1 + datetime.timedelta(weeks=-2)
print(dt1-dt2)
print(dt2-dt1)

结果:

14 days, 0:00:00
-14 days, 0:00:00

tzinfo对象
tzinfo是一个时区对象的抽象类,datetime和time对象使用它来提供可自定义的时间调整概念(例如:时区或者夏令营)
tzinifo类不能直接使用,但是可以用datetime.timezone生成。datetime.timezone.utc实现了UTC时区的tzinfo实例

import datetime
utc_now1 = datetime.datetime.now(datetime.timezone.utc)
utc_now2 = datetime.datetime.utcnow()
print(utc_now1)
print(utc_now2)

结果:

2020-02-02 11:49:31.664417+00:00
2020-02-02 11:49:31.664417

datetime.timezone是tzinfo的子类,所以也可以使用datetime.timezone类来实现想要的时区信息。构造该对象只需传入和UTC时间相隔的 timedelta对象即可

import datetime
china_timezone = datetime.timezone(datetime.timedelta(hours=8))
utc_timezone = datetime.timezone(datetime.timedelta(hours=0))
china_time = datetime.datetime.now(china_timezone)
utc_time = datetime.datetime.now(utc_timezone)
print(china_time)
print(utc_time)

结果:

2020-02-02 20:05:06.059839+08:00
2020-02-02 12:05:06.059839+00:00

calender模块
一个和日历相关的模块,用于输出某月的字符月历

import calendar
print(calendar.isleap(2000))#判断是否为闰年
print(calendar.isleap(2018))
print(calendar.leapdays(1990,2018))#返回两个年份之间的闰年总数
print(calendar.leapdays(2017,2018))
print(calendar.month(2020,2))#返回日历
print(calendar.month(2020,2,w=3))
p

rint(calendar.month(2020,2,l=3))

结果:

E:\anewproject\venv\Scripts\python.exe E:/anewproject/python.py
True
False
7
0
   February 2020
Mo Tu We Th Fr Sa Su
                1  2
 3  4  5  6  7  8  9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29

       February 2020
Mon Tue Wed Thu Fri Sat Sun
                      1   2
  3   4   5   6   7   8   9
 10  11  12  13  14  15  16
 17  18  19  20  21  22  23
 24  25  26  27  28  29

   February 2020


Mo Tu We Th Fr Sa Su


                1  2


 3  4  5  6  7  8  9


10 11 12 13 14 15 16


17 18 19 20 21 22 23


24 25 26 27 28 29




Process finished with exit code 0
import calendar
#calender.monthcalender方法返回一个整数的单层嵌套列表,每个子列表装在一个星期。该月之外的日期都为0,该日之内的日期设为该日的日期
print(calendar.monthcalendar(2020,2))
#calender.monthrange方法返回两个整数组成的元组,第一个整数表示该月的第一天是星期几,第二个整数表示该月的天数
print(calendar.monthrange(2020,2))
#返回给定日期的星期码(从0(星期一)到6(星期日))
print(calendar.weekday(2020,2,2))
print(calendar.calendar(2020))

结果:

E:\anewproject\venv\Scripts\python.exe E:/anewproject/python.py
[[0, 0, 0, 0, 0, 1, 2], [3, 4, 5, 6, 7, 8, 9], [10, 11, 12, 13, 14, 15, 16], [17, 18, 19, 20, 21, 22, 23], [24, 25, 26, 27, 28, 29, 0]]
(5, 29)
6
                                  2020

      January                   February                   March
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
       1  2  3  4  5                      1  2                         1
 6  7  8  9 10 11 12       3  4  5  6  7  8  9       2  3  4  5  6  7  8
13 14 15 16 17 18 19      10 11 12 13 14 15 16       9 10 11 12 13 14 15
20 21 22 23 24 25 26      17 18 19 20 21 22 23      16 17 18 19 20 21 22
27 28 29 30 31            24 25 26 27 28 29         23 24 25 26 27 28 29
                                                    30 31

       April                      May                       June
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
       1  2  3  4  5                   1  2  3       1  2  3  4  5  6  7
 6  7  8  9 10 11 12       4  5  6  7  8  9 10       8  9 10 11 12 13 14
13 14 15 16 17 18 19      11 12 13 14 15 16 17      15 16 17 18 19 20 21
20 21 22 23 24 25 26      18 19 20 21 22 23 24      22 23 24 25 26 27 28
27 28 29 30               25 26 27 28 29 30 31      29 30

        July                     August                  September
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
       1  2  3  4  5                      1  2          1  2  3  4  5  6
 6  7  8  9 10 11 12       3  4  5  6  7  8  9       7  8  9 10 11 12 13
13 14 15 16 17 18 19      10 11 12 13 14 15 16      14 15 16 17 18 19 20
20 21 22 23 24 25 26      17 18 19 20 21 22 23      21 22 23 24 25 26 27
27 28 29 30 31            24 25 26 27 28 29 30      28 29 30
                          31

      October                   November                  December
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
          1  2  3  4                         1          1  2  3  4  5  6
 5  6  7  8  9 10 11       2  3  4  5  6  7  8       7  8  9 10 11 12 13
12 13 14 15 16 17 18       9 10 11 12 13 14 15      14 15 16 17 18 19 20
19 20 21 22 23 24 25      16 17 18 19 20 21 22      21 22 23 24 25 26 27
26 27 28 29 30 31         23 24 25 26 27 28 29      28 29 30 31
                          30


Process finished with exit code 0
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章