Python時間運算的詳細機制初探討

2021-03-02 Python中文社區
劉布丁,Python中文社區專欄作者,目前工作職位是Python後臺工程師,擅長Python系統監控。codewars四級段位不斷刷題中。
博客地址:http://coderselftrain.com/archives/

本篇共2部分,上篇我們初步探討Python時間運算的機制,下篇為一句話快速運用Python的datetime進行時間運算的技巧。

Python時間運算的詳細機制初探討

我們先來看一張圖:

import time

導入時間模塊;

In [5]: time.strptime('20161009','%Y%m%d')

Out[5]: time.struct_time(tm_year=2016, tm_mon=10, tm_mday=9, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=6, tm_yday=283, tm_isdst=-1)

In [6]: time.mktime(time.strptime('20161009','%Y%m%d'))

Out[6]: 1475942400.0

In [7]: time.localtime(1475942400.0)

Out[7]: time.struct_time(tm_year=2016, tm_mon=10, tm_mday=9, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=6, tm_yday=283, tm_isdst=0)

In [13]: time.strftime('%Y%m%d',time.localtime(1475942400.0))

Out[13]: '20161009'

附:字符時間常用格式

%Y  Year with century as a decimal number.

%m  Month as a decimal number [01,12].

%d  Day of the month as a decimal number [01,31].

%H  Hour (24-hour clock) as a decimal number [00,23].

%M  Minute as a decimal number [00,59].

%S  Second as a decimal number [00,61].

%z  Time zone offset from UTC.

%a  Locale's abbreviated weekday name.

%A  Locale's full weekday name.

%b  Locale's abbreviated month name.

%B  Locale's full month name.

%c  Locale's appropriate date and time representation.

%I  Hour (12-hour clock) as a decimal number [01,12].

%p  Locale's equivalent of either AM or PM.

一句話快速進行python時間運算的技巧1、python快速求值當前時間

當前的天數、當前的時間

In [1]: from datetime import datetime, timedelta, date

In [2]: (datetime.now()).strftime('%Y%m%d')

Out[2]: '20161009'

In [3]: (datetime.now()).strftime('%Y/%m/%d %H:%M:%S')

Out[3]: '2016/10/09 16:57:12'

同上,當前的周數、月份、上下午等都可以通過後面的格式化字符求出。例如,

%a代表英文周幾,%b代表月份,%p代表AM/PM等,更多的參考下圖:

2 、python快速時間運算

python周數運算、天數運算、小時運算、秒數運算、毫秒運算、微秒運算

In [5]: (datetime.now()-timedelta(days=1)).strftime('%Y%m%d')  # 1天前,N天前

Out[5]: '20161008'

In [6]: (datetime.now()-timedelta(hours=1)).strftime('%Y/%m/%d %H:%M:%S')  # 1小時前,n小時前

Out[6]: '2016/10/09 16:00:02'

同上,weeks表示周為單位,second表示秒為單位,milliseconds表示毫秒為單位, microseconds微秒為單位。

其實就是給 timedelta() 這個類傳入的參數變一下就可以了:

可傳入的參數有 timedelta(weeks, days, hours, second, milliseconds, microseconds) 每個參數都是可選參數,默認值為0,參數值必須是這些(整數,浮點數,正數,負數)。

優秀人才不缺工作機會,只缺適合自己的好機會。但是他們往往沒有精力從海量機會中找到最適合的那個。

100offer 會對平臺上的人才和企業進行嚴格篩選,讓「最好的人才」和「最好的公司」相遇。
掃描下方二維碼,註冊 100offer,談談你對下一份工作的期待。一周內,收到 5-10 個滿足你要求的好機會!

Python中文社區俱樂部QQ群:274631467

專欄作者申請郵箱

pythonpost@163.com

— Life is short,we use Python —

相關焦點

  • 深入探討 Python 的 import 機制
    恰恰我覺得這篇文章的內容可以算是 Python 的進階技能,會深入地探討並以真實案例講解 Python import Hook 的知識點。當然為了使文章更系統、全面,前面會有小篇幅講解基礎知識點,但請你有耐心的往後讀下去,因為後面才是本篇文章的精華所在,希望你不要錯過。1. 導入系統的基礎導入單元有多種,可以是模塊、包及變量等。
  • 慢步學習,二級python,數字類型及其運算
    慢步學習,備考二級python語言,程序的基本語法元素慢步學習,二級python語言備考,基本輸入輸出函數今天想跟大家一起學習詳細可以參考Python兩種基本數據類型:數值及字符串;python交互式運行環境
  • python教程之python數學運算
    中進行分數(fraction)運算分數運算是python中的一個模塊(module)。#對分數進行運算>>> Fraction(2,8)+1+1.52.75運算中如果出現float數據類型,最終的結果將是float類型數據。
  • 【Python 第53課】 數學運算
    今天從打飛機遊戲裡中斷一下,說些python的基礎。python的數學運算模塊叫做math,再用之前,你需要import mathmath包裡有兩個常量:math.pi圓周率π:3.141592...math.e自然常數:2.718281...
  • python快速教程之四則運算
    python的四則運算無非也就是我們小學所學習的加(+)減(-)乘(*)除(/)冪(**),不過在python裡面多了一個取餘(%)運算!python的加法運算如果對於數字對你來說絕對沒有問題,在這裡要說明的是加法同樣適用字符串.
  • Python編程基礎,數字及數學運算
    慢步越來越喜歡看「官網」了,一本python的二級教材大略看完,架構有了,發現還有很多細節沒有,網上各種網站找太複雜,這不,還是官網好。慢步去看了python的官網,純英文這個閱讀會比較難受,但收穫還是有很多的。發現了很多二級教材中沒有的細項內容。
  • 什麼是運算符和表達式,在python中是如何處理數學運算的?
    又到了和大家分享的時刻了,初識python,相信很多編程愛好者們對程序的解義在心裡應該有一個概念了吧,對於pycharm的用法與進位的認知,在大家的心裡是否還有印象?前面我們提到了python的核心數據(整數型、浮點型、複數等),那麼大家是否知道,這些數據是用來幹什麼的呢?
  • python面試題精講——邏輯運算and-or運算的本質
    python的and、or邏輯運算是非常基礎的應用,但是你真的明白它們組合起來運算的本質嗎,有的人說and-or是python裡面的三元運算符,
  • python運算符優先級,加減乘除只是基礎,學習python第2天
    在計算機編程中少不了運算,而python運算符有哪些呢?python運算符優先級順序又是怎麼樣的?就像數學一樣,加減乘除只是基礎,了解python運算符才能解決實際性的問題。而python運算符有哪些以及它們的優先級又是怎麼樣的呢?下面用一張表格來說明,下表將按照python運算符的優先級順序從高到底進行排序。(在實際項目中,如果搞不清楚運算符優先級,可以通過括號保證括號內的運算優先進行。)
  • python基礎知識變量、運算和數據類型
    昨天搭建好juypter notebook,並錄製了第一堂python的課程,簡單講解了python的歷史,以及python可以幫助我們如何提供效率。app1l7mFcxc5362.h5.xiaoeknow.com/content_page/eyJ0eXBlIjoiMiIsInJlc291cmNlX3R5cGUiOjQsInJlc291cmNlX2lkIjoibF81ZTgwMjdiYWVkNzQzX3ZoQWczbEJwIiwiYXBwX2lkIjoiYXBwMWw3bUZjeGM1MzYyIiwicHJvZHVjdF9pZCI6IiJ9python
  • python中的數學運算(二)
    1、python中有一些類似數學集合的運算,如 或、且、非的關係,對應的運算符有 |,&,-等運算符。
  • python的內置函數eval:字符串運算
    python中的eval字符串運算1.語法eval(expression[, globals[, locals]]),其中expression是一個字符串表達式,globals和locals是兩個作用域,一個是全局命名空間,一個是局部命名空間。
  • Python數學運算入門把Python當作計算器
    (這不需要很長時間。)1、Numbers 用Python做算術運算The interpreter acts as a simple calculator: you can type an expression at it and it will write the value.
  • Python Import 機制與拓展——劉暢@PyCon 2015 China
    在PEP8中,Python官方推薦的是絕對引用,詳細理由可以參考https://www.python.org/dev/peps/pep-0008/#imports。規範打包發布為了別人使用自己代碼的方便,應該儘量使用規範的包分發機制。為自己的Python包編寫正確的setup.py文件,添加相應的README.md文件。對於提供一些可執行命令的包,則可以使用 console_entrypoint 的機制來提供。因為打包和分發不是本文重點,不再詳細敘述,大家可以查看官方文檔。
  • Python學習第114課——numpy中ndarray的四則運算
    【每天幾分鐘,從零入門python編程的世界!】我們為什麼要學習numpy?numpy其實就是number+Python的簡寫,意思就是通過Python對數據進行處理。這節我們學習numpy中數組的一些基本的四則運算。●numpy中數組的加法運算我們首先生成x和y兩個float類型的數組,然後把它們進行相加。
  • 用Python數據處理分析入門必備系列文章:基本類型與運算
    本文全程使用 cell 交互模式編寫代碼,還不認識 cell 模式,請看本系列上一節內容數值運算編程本質上是把我們的想法告訴計算機,讓其運行,本系列儘可能從語義角度講解代碼。首先,讓計算機做簡單的數值運算是必需的:符合 # ,後面的內容都被視為注釋,就是一些備註,不會被當作為代碼上圖的代碼即表示其上方注釋表達的中文意思在 cell 交互模式中,最後的值會被自動輸出,比如第一個 cell 的1+1結果2,就會被顯示出來(上圖右方第一個區域)有人問:運算就只有這些嗎?當然不是,有需要你可以多利用搜尋引擎。
  • python:numpy入門詳細教程
    最後分享了個人關於axis和廣播機制的理解。本文知識要點一級菜單numpy:numerical python縮寫,提供了底層基於C語言實現的數值計算庫,與python內置的list和array數據結構相比,其支持更加規範的數據類型和極其豐富的操作接口,速度也更快
  • 「python opencv視覺零基礎實戰」七邏輯運算應用
    一、學習目標了解opencv中圖像的邏輯運算了解opencv中邏輯運算的應用如有錯誤歡迎指出~目錄「python opencv 計算機視覺零基礎實戰」 第一節「python opencv視覺入門到實戰」二、格式與攝像頭「python opencv 視覺入門到實戰」 三、圖像編輯「python
  • 超詳細的Python自學項目收集!
    Python的發明者是Guido van Rossum,發明時間是1989年底,第一個公開發行版發行於1991年。如果你想從零開始學習Python程式語言,或者你想對Python的應用有更深入的了解,W3Cschool資深用戶收集的Python自學項目非常適合您。
  • python數據科學系列:numpy入門詳細教程
    最後分享了個人關於axis和廣播機制的理解。本文知識要點一級菜單numpy:numerical python縮寫,提供了底層基於C語言實現的數值計算庫,與python內置的list和array數據結構相比,其支持更加規範的數據類型和極其豐富的操作接口,速度也更快numpy的兩個重要對象是