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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章