<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                “一寸光陰一寸金,寸金難買寸光陰”,時間是寶貴的。 在日常生活中,“時間”這個屬于是比較籠統和含糊的。在物理學中,“時間”是一個非常明確的概念。在python中,“時間”可以通過相關模塊實現。 ## [](https://github.com/qiwsir/StarterLearningPython/blob/master/224.md#calendar)calendar ~~~ >>> import calendar >>> cal = calendar.month(2015, 1) >>> print cal January 2015 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 31 ~~~ 輕而易舉得到了2015年1月的日歷,并且排列的還那么整齊。這就是calendar模塊。讀者可以用dir()去查看這個模塊下的所有內容。為了讓讀者閱讀方便,將常用的整理如下: **calendar(year,w=2,l=1,c=6)** 返回year年年歷,3個月一行,間隔距離為c。 每日寬度間隔為w字符。每行長度為21* W+18+2* C。l是每星期行數。 ~~~ >>> year = calendar.calendar(2015) >>> print year 2015 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 1 1 5 6 7 8 9 10 11 2 3 4 5 6 7 8 2 3 4 5 6 7 8 12 13 14 15 16 17 18 9 10 11 12 13 14 15 9 10 11 12 13 14 15 19 20 21 22 23 24 25 16 17 18 19 20 21 22 16 17 18 19 20 21 22 26 27 28 29 30 31 23 24 25 26 27 28 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 ~~~ **isleap(year)** 判斷是否為閏年,是則返回true,否則false. ~~~ >>> calendar.isleap(2000) True >>> calendar.isleap(2015) False ~~~ 怎么判斷一年是閏年,常常見諸于一些編程語言的練習題,現在用一個方法搞定。 **leapdays(y1,y2)** 返回在Y1,Y2兩年之間的閏年總數,包括y1,但不包括y2,這有點如同序列的切片一樣。 ~~~ >>> calendar.leapdays(2000,2004) 1 >>> calendar.leapdays(2000,2003) 1 ~~~ **month(year,month,w=2,l=1)** 返回year年month月日歷,兩行標題,一周一行。每日寬度間隔為w字符。每行的長度為7* w+6。l是每星期的行數。 ~~~ >>> print calendar.month(2015, 5) May 2015 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 31 ~~~ **monthcalendar(year,month)** 返回一個列表,列表內的元素還是列表,這叫做嵌套列表。每個子列表代表一個星期,都是從星期一到星期日,如果沒有本月的日期,則為0。 ~~~ >>> calendar.monthcalendar(2015, 5) [[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, 30, 31]] ~~~ 讀者可以將這個結果和`calendar.month(2015, 5)`去對照理解。 **monthrange(year,month)** 返回一個元組,里面有兩個整數。第一個整數代表著該月的第一天從星期幾是(從0開始,依次為星期一、星期二,直到6代表星期日)。第二個整數是該月一共多少天。 ~~~ >>> calendar.monthrange(2015, 5) (4, 31) ~~~ 從返回值可知,2015年5月1日是星期五,這個月一共31天。這個結果,也可以從日歷中看到。 **weekday(year,month,day)** 輸入年月日,知道該日是星期幾(注意,返回值依然按照從0到6依次對應星期一到星期六)。 ~~~ >>> calendar.weekday(2015, 5, 4) #星期一 0 >>> calendar.weekday(2015, 6, 4) #星期四 3 ~~~ ## [](https://github.com/qiwsir/StarterLearningPython/blob/master/224.md#time)time **time()** time模塊是常用的。 ~~~ >>> import time >>> time.time() 1430745298.391026 ~~~ `time.time()`獲得的是當前時間(嚴格說是時間戳),只不過這個時間對人不友好,它是以1970年1月1日0時0分0秒為計時起點,到當前的時間長度(不考慮閏秒) > UNIX時間,或稱POSIX時間是UNIX或類UNIX系統使用的時間表示方式:從協調世界時1970年1月1日0時0分0秒起至現在的總秒數,不考慮閏秒 > > 現時大部分使用UNIX的系統都是32位元的,即它們會以32位二進制數字表示時間。但是它們最多只能表示至協調世界時間2038年1月19日3時14分07秒(二進制:01111111 11111111 11111111 11111111,0x7FFF:FFFF),在下一秒二進制數字會是10000000 00000000 00000000 00000000,(0x8000:0000),這是負數,因此各系統會把時間誤解作1901年12月13日20時45分52秒(亦有說回歸到1970年)。這時可能會令軟體發生問題,導致系統癱瘓。 > > 目前的解決方案是把系統由32位元轉為64位元系統。在64位系統下,此時間最多可以表示到292,277,026,596年12月4日15時30分08秒。 有沒有對人友好一點的時間顯示呢? **localtime()** ~~~ >>> time.localtime() time.struct_time(tm_year=2015, tm_mon=5, tm_mday=4, tm_hour=21, tm_min=33, tm_sec=39, tm_wday=0, tm_yday=124, tm_isdst=0) ~~~ 這個就友好多了。得到的結果可以稱之為時間元組(也有括號),其各項的含義是: | 索引 | 屬性 | 含義 | | --- | --- | --- | | 0 | tm_year | 年 | | 1 | tm_mon | 月 | | 2 | tm_mday | 日 | | 3 | tm_hour | 時 | | 4 | tm_min | 分 | | 5 | tm_sec | 秒 | | 6 | tm_wday | 一周中的第幾天 | | 7 | tm_yday | 一年中的第幾天 | | 8 | tm_isdst | 夏令時 | ~~~ >>> t = time.localtime() >>> t[1] 5 ~~~ 通過索引,能夠得到相應的屬性,上面的例子中就得到了當前時間的月份。 其實,`time.localtime()`不是沒有參數,它在默認情況下,以`time.time()`的時間戳為參數。言外之意就是說可以自己輸入一個時間戳,返回那個時間戳所對應的時間(按照公元和時分秒計時)。例如: ~~~ >>> time.localtime(100000) time.struct_time(tm_year=1970, tm_mon=1, tm_mday=2, tm_hour=11, tm_min=46, tm_sec=40, tm_wday=4, tm_yday=2, tm_isdst=0) ~~~ **gmtime()** localtime()得到的是本地時間,如果要國際化,就最好使用格林威治時間。可以這樣: ~~~ >>> import time >>> time.gmtime() time.struct_time(tm_year=2015, tm_mon=5, tm_mday=4, tm_hour=23, tm_min=46, tm_sec=34, tm_wday=0, tm_yday=124, tm_isdst=0) ~~~ > 格林威治標準時間(中國大陸翻譯:格林尼治平均時間或格林尼治標準時間,臺、港、澳翻譯:格林威治標準時間;英語:Greenwich Mean Time,GMT)是指位於英國倫敦郊區的皇家格林威治天文臺的標準時間,因為本初子午線被定義在通過那裡的經線。 還有更友好的: **asctime()** ~~~ >>> time.asctime() 'Mon May 4 21:46:13 2015' ~~~ `time.asctime()`的參數為空時,默認是以`time.localtime()`的值為參數,所以得到的是當前日期時間和星期。當然,也可以自己設置參數: ~~~ >>> h = time.localtime(1000000) >>> h time.struct_time(tm_year=1970, tm_mon=1, tm_mday=12, tm_hour=21, tm_min=46, tm_sec=40, tm_wday=0, tm_yday=12, tm_isdst=0) >>> time.asctime(h) 'Mon Jan 12 21:46:40 1970' ~~~ 注意,`time.asctime()`的參數必須是時間元組,類似上面那種。不是時間戳,通過`time.time()`得到的時間戳,也可以轉化為上面形式: **ctime()** ~~~ >>> time.ctime() 'Mon May 4 21:52:22 2015' ~~~ 在沒有參數的時候,事實上是以`time.time()`的時間戳為參數。也可以自定義一個時間戳。 ~~~ >>> time.ctime(1000000) 'Mon Jan 12 21:46:40 1970' ~~~ 跟前面得到的結果是一樣的。只不過是用了時間戳作為參數。 在前述函數中,通過localtime()、gmtime()得到的是時間元組,通過time()得到的是時間戳。有的函數如asctime()是以時間元組為參數,有的如ctime()是以時間戳為函數。這樣做的目的是為了滿足編程中多樣化的需要。 **mktime()** mktime()也是以時間元組為參數,但是它返回的不是可讀性更好的那種樣式,而是: ~~~ >>> lt = time.localtime() >>> lt time.struct_time(tm_year=2015, tm_mon=5, tm_mday=5, tm_hour=7, tm_min=55, tm_sec=29, tm_wday=1, tm_yday=125, tm_isdst=0) >>> time.mktime(lt) 1430783729.0 ~~~ 返回了時間戳。就類似于localtime()的逆過程(localtime()是以時間戳為參數)。 以上基本能夠滿足編程需要了嗎?好像還缺點什么,因為在編程中,用的比較多的是“字符串”,似乎還沒有將時間轉化為字符串的函數。這個應該有。 **strftime()** 函數格式稍微復雜一些。 > Help on built-in function strftime in module time: > > strftime(...) strftime(format[, tuple]) -> string > > Convert a time tuple to a string according to a format specification. See the library reference manual for formatting codes. When the time tuple is not present, current time as returned by localtime() is used. 將時間元組按照指定格式要求轉化為字符串。如果不指定時間元組,就默認為localtime()值。我說復雜,是在于其format,需要用到下面的東西。 | 格式 | 含義 | 取值范圍(格式) | | --- | --- | --- | | %y | 去掉世紀的年份 | 00-99,如"15" | | %Y | 完整的年份 | 如"2015" | | %j | 指定日期是一年中的第幾天 | 001-366 | | %m | 返回月份 | 01-12 | | %b | 本地簡化月份的名稱 | 簡寫英文月份 | | %B | 本地完整月份的名稱 | 完整英文月份 | | %d | 該月的第幾日 | 如5月1日返回"01" | | %H | 該日的第幾時(24小時制) | 00-23 | | %l | 該日的第幾時(12小時制) | 01-12 | | %M | 分鐘 | 00-59 | | %S | 秒 | 00-59 | | %U | 在該年中的第多少星期(以周日為一周起點) | 00-53 | | %W | 同上,只不過是以周一為起點 | 00-53 | | %w | 一星期中的第幾天 | 0-6 | | %Z | 時區 | 在中國大陸測試,返回CST,即China Standard Time | | %x | 日期 | 日/月/年 | | %X | 時間 | 時:分:秒 | | %c | 詳細日期時間 | 日/月/年 時:分:秒 | | %% | ‘%’字符 | ‘%’字符 | | %p | 上下午 | AM or PM | 簡要列舉如下: ~~~ >>> time.strftime("%y,%m,%d") '15,05,05' >>> time.strftime("%y/%m/%d") '15/05/05' ~~~ 分隔符可以自由指定。既然已經變成字符串了,就可以“隨心所欲不逾矩”了。 **strptime()** > Help on built-in function strptime in module time: > > strptime(...) strptime(string, format) -> struct_time > > Parse a string to a time tuple according to a format specification. See the library reference manual for formatting codes (same as strftime()). strptime()的作用是將字符串轉化為時間元組。請注意的是,其參數要指定兩個,一個是時間字符串,另外一個是時間字符串所對應的格式,格式符號用上表中的。例如: ~~~ >>> today = time.strftime("%y/%m/%d") >>> today '15/05/05' >>> time.strptime(today, "%y/%m/%d") time.struct_time(tm_year=2015, tm_mon=5, tm_mday=5, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=125, tm_isdst=-1) ~~~ ## [](https://github.com/qiwsir/StarterLearningPython/blob/master/224.md#datetime)datetime 雖然time模塊已經能夠把有關時間方面的東西搞定了,但是,在某些調用的時候,還感覺不是很直接,于是又出來了一個datetime模塊,供程序猿和程序媛們選擇使用。 datetime模塊中有幾個類: * datetime.date:日期類,常用的屬性有year/month/day * datetime.time:時間類,常用的有hour/minute/second/microsecond * datetime.datetime:日期時間類 * datetime.timedelta:時間間隔,即兩個時間點之間的時間長度 * datetime.tzinfo:時區類 ### [](https://github.com/qiwsir/StarterLearningPython/blob/master/224.md#date類)date類 通過實例了解常用的屬性: ~~~ >>> import datetime >>> today = datetime.date.today() >>> today datetime.date(2015, 5, 5) ~~~ 這里其實生成了一個日期對象,然后操作這個對象的各種屬性。用print語句,可以是視覺更佳: ~~~ >>> print today 2015-05-05 >>> print today.ctime() Tue May 5 00:00:00 2015 >>> print today.timetuple() time.struct_time(tm_year=2015, tm_mon=5, tm_mday=5, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=125, tm_isdst=-1) >>> print today.toordinal() 735723 ~~~ 特別注意,如果你妄圖用`datetime.date.year()`,是會報錯的,因為year不是一個方法,必須這樣行: ~~~ >>> print today.year 2015 >>> print today.month 5 >>> print today.day 5 ~~~ 進一步看看時間戳與格式化時間格式的轉換 ~~~ >>> to = today.toordinal() >>> to 735723 >>> print datetime.date.fromordinal(to) 2015-05-05 >>> import time >>> t = time.time() >>> t 1430787994.80093 >>> print datetime.date.fromtimestamp(t) 2015-05-05 ~~~ 還可以更靈活一些,修改日期。 ~~~ >>> d1 = datetime.date(2015,5,1) >>> print d1 2015-05-01 >>> d2 = d1.replace(year=2005, day=5) >>> print d2 2005-05-05 ~~~ ### [](https://github.com/qiwsir/StarterLearningPython/blob/master/224.md#time類)time類 也要生成time對象 ~~~ >>> t = datetime.time(1,2,3) >>> print t 01:02:03 ~~~ 它的常用屬性: ~~~ >>> print t.hour 1 >>> print t.minute 2 >>> print t.second 3 >>> t.microsecond 0 >>> print t.tzinfo None ~~~ ### [](https://github.com/qiwsir/StarterLearningPython/blob/master/224.md#timedelta類)timedelta類 主要用來做時間的運算。比如: ~~~ >>> now = datetime.datetime.now() >>> print now 2015-05-05 09:22:43.142520 ~~~ 沒有講述datetime類,因為在有了date和time類知識之后,這個類比較簡單,我最喜歡這個now方法了。 對now增加5個小時 ~~~ >>> b = now + datetime.timedelta(hours=5) >>> print b 2015-05-05 14:22:43.142520 ~~~ 增加兩周 ~~~ >>> c = now + datetime.timedelta(weeks=2) >>> print c 2015-05-19 09:22:43.142520 ~~~ 計算時間差: ~~~ >>> d = c - b >>> print d 13 days, 19:00:00 ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看