小白學 Python(22):time 和 calendar 模塊簡單使用

人生苦短,我選Python

前文傳送門

time 模塊

今天我們要介紹的是一個會經常用到的模塊—— time ,顧名思義,這是一個時間相關的模塊。前面我們也介紹過常用模塊,比如 os 模塊,在使用這些模塊前,我們需要先將它導入進來。 time 模塊的導入方式如下:

import time

先來一個簡單的樣例吧:

for i in range(0, 5):
    print(i)
    time.sleep(1)

打印結果我就不展示了,同學們應該都猜得到。那麼 time.sleep(1) 這句話的作用是什麼呢?

sleep() 方法是一個睡眠方法,意思就是程序執行到這裏,需要等待一會,什麼都不做,上面的代碼在執行的時候可以發現,每隔 1s 會打印一個数字, sleep() 裏面給出的參數是休眠的時間,單位是秒。

time 模塊的常用方法

首當其沖當然是獲取當前的時間戳。

print(time.time())

結果如下:

1573054874.6483195

這裏就看不懂了哇,我先來解釋下什麼是時間戳。

在程序中,一般已1970年1月1日0時0分0秒作為起始時間,時間戳就是從起始時間到現在的時長,在 Python 中,這個時長的單位是秒。那麼為什麼起始時間是1970年1月1日0時0分0秒呢?

emmmmmmmmmmmmm,這個我還真不知道,據我所了解的語言,所有的時間戳都是從這個時間點開始起算的。我順手幫各位同學百度了下,表示並沒有找到答案。

不要糾結這個問題了,我們看下一個。

print(time.localtime())

結果如下:

time.struct_time(tm_year=2019, tm_mon=11, tm_mday=6, tm_hour=23, tm_min=47, tm_sec=13, tm_wday=2, tm_yday=310, tm_isdst=0)

這個方法會給出詳細的當前的本地時間,可以細化到年、月、日、小時、分鐘、秒等。

注意: 這個時間是當前本地的計算的時間哦,如果修改計算機的時間,這個值會發生相應的改變的。

print(time.mktime(time.localtime()))

結果如下:

1573055380.0

各位同學看着打印結果應該已經猜到了, mktime() 可以將當前的本地時間轉化為一個時間戳。

以上不管是時間戳、還是本地時間,看起來並不方便,下面我們介紹如何格式化時間。

最簡單的方法,可以使用函數 asctime()

print(time.asctime(time.localtime()))

結果如下:

Wed Nov  6 23:53:52 2019

這個結果還帶着英文,並不符合中國人的習慣嘛,別急,我們還可以自定義格式。

print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))

結果如下:

2019-11-06 23:55:56

這樣看着就舒服多了么,我們可以通過 strftime() 來自定義日期格式。

這裏列舉一下日期格式化的符號:

  • %y 兩位數的年份表示(00-99)
  • %Y 四位數的年份表示(000-9999)
  • %m 月份(01-12)
  • %d 月內中的一天(0-31)
  • %H 24小時制小時數(0-23)
  • %I 12小時制小時數(01-12)
  • %M 分鐘數(00=59)
  • %S 秒(00-59)
  • %a 本地簡化星期名稱
  • %A 本地完整星期名稱
  • %b 本地簡化的月份名稱
  • %B 本地完整的月份名稱
  • %c 本地相應的日期表示和時間表示
  • %j 年內的一天(001-366)
  • %p 本地A.M.或P.M.的等價符
  • %U 一年中的星期數(00-53)星期天為星期的開始
  • %w 星期(0-6),星期天為星期的開始
  • %W 一年中的星期數(00-53)星期一為星期的開始
  • %x 本地相應的日期表示
  • %X 本地相應的時間表示
  • %Z 當前時區的名稱
  • %% %號本身

哇,這也太多了,記不住怎麼辦?

其實這個並不需要你都記下來,只需要記住常用的就好了,就比如我上面使用的年、月、日、時、分、秒。其餘的不常用的可以在有需要的時候再來查表。

有時候時間之間不使用短橫杠 - 來隔開,而選擇使用斜杠 / 隔開,這個怎麼辦?

這個很簡單咯,看我的:

print(time.strftime("%Y/%m/%d %H:%M:%S", time.localtime()))

結果如下:

2019/11/07 00:02:18

calendar 模塊

都聊到這裏了,我們順便再聊一個模塊,日曆。

先看下代碼演示吧,這個就比較有意思了:

import calendar

print(calendar.calendar(theyear=2020, w=2, l=1, c=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

我們把 2020 年的日曆打印出來了。

  • w = 每個日期之間的間隔字符數
  • l = 每周所佔用的行數
  • c = 每個月之間的間隔字符數

以後我們看日曆可以使用這個函數看了。

要用你們用,反正我是不用,我選擇使用這個:

除了直接返回全年的日曆,calendar 還支持返回指定月份的日曆:

print(calendar.month(2019, 11))

結果如下:

   November 2019
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 30

我們還可以直接獲得某月的總天數:

print(calendar.monthlen(2019, 11))

結果如下:

30

這個功能好像有點雞肋,我們獲取某月的天數難道不是都靠那句兒歌么?

一三五七八十臘,三十一天永不差

我們還可以知道指定的日期對應的星期數:

print(calendar.weekday(2019, 11, 7))

結果如下:

3

這個我覺得蠻實用的,再也不用自己寫算法去推算了。

示例代碼

本系列的所有代碼小編都會放在代碼管理倉庫 Github 和 Gitee 上,方便大家取用。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※廣告預算用在刀口上,網站設計公司幫您達到更多曝光效益

※自行創業 缺乏曝光? 下一步"網站設計"幫您第一時間規劃公司的門面形象

南投搬家前需注意的眉眉角角,別等搬了再說!

您可能也會喜歡…