电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

python 常用日期處理-- datetime 模塊的使用

瀏覽:19日期:2022-07-12 15:19:43

僅以此篇記錄一下個人常用的 Python 處理日期的庫與函數,主要涉及的類庫有 Python 自帶的 datetime, time 和 calendar,以及第三方的 dateutil。說到日期處理基本上要覆蓋的概念有 date, time, datetime, timezone, calendar, 時間的比較與差值,解析與格式化顯示等。

在 datetime 模塊中類之間的繼承關系如下:

object├── date│ └── datetime├── time├── timedelta└── tzinfo└── timezone

我們著重體驗一下前面粗體顯示的 datetime, date, time, timedelta 對象, timezone 也不是不重要,有時候也可能只需要處理本地時間。

datetime, date, time 實例的創建

可以使用它們各自的構造函數,提供必要的參數來創建相應的實例,下面是它們的構造函數

datetime: def __new__(cls, year, month=None, day=None, hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)date: def __new__(cls, year, month=None, day=None) time: def __new__(cls, hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)

比如

from datetime import datetime, date, time, timedelta today = date(2019, 4, 24) # 2019-04-24

獲得當前日期或時間

date.today() #2019-04-24datetime.now() # 2019-04-24 21:41:40.226300 datetime.today() # 2019-04-24 21:41:50.336293datetime.today().date() #2019-04-24datetime.today().time() #21:41:50.336303 datetime.now().date()datetime.now().time()

從語義上應該調用 date.today() 和 datetime.now(),datetime.today() 只是 datetime 繼承自 date 的函數。

time 沒有 today() 或 now() 方法,所以只有通過 datetime.now() 來得到相應的 time, datetime 兼具 date 與 time 信息,所以總是可以經由 datetime 來獲得相應的 date 和 time。

解析字符串獲得實例

date.fromisoformat(’2019-04-24’) # 2019-04-24datetime.fromisoformat(’2019-04-24T13:12:23’) # 2019-04-24 13:12:23datetime.strptime(’04/24/2019’, ’%m/%d/%Y’) # 2019-04-24 00:00:00time.fromisoformat(’12:12:24+06:00’) #12:12:24+06:00

datetime, date 和 time 都有 fromisoformat() 方法,就是要了解它們各自的 ISO 表示格式。能指定格式來解析字符串只有 datetime 有 strptime() 方法,因為有了 datetime 也就有了相應的 date 與 time

date, datetime 與 time 相應的 ISO 格式如下

date ISO format: YYYY-MM-DD datetime ISO format: YYYY-MM-DD[*HH[:MM[:SS[.fff[fff]]]][+HH:MM[:SS[.ffffff]]]] time ISO format: HH[:MM[:SS[.fff[fff]]]][+HH:MM[:SS[.ffffff]]]

能自由解析字符串的就是 datetime.strptime(str, fmt),Python 借鑒了標準 C 的日期格式定義字符串,見 strftime() and strptime() Behavior. 后面的 strftime() 函數也要用到相同的格式定義法。

注:strftime() 和 strptime() 中的 f 和 p 分別對應著 format 和 parse 的首字母。

基于 Timestamp 來創建實例

Python 本身沒有 Timestamp 這么一個類型,這里的 timestamp 是一個浮點數表示的

ts = datetime.today().timestamp() # 1556161777.38553date.fromtimestamp(ts) # 2019-04-24datetime.fromtimestamp(ts) # 2019-04-24 22:09:37.385530

time 沒有 fromtimestamp() 方法

格式化輸出

date, datetime 和 time 都有 isoformat() 和 strftime(fmt) 函數,格式字符串請參考 strftime() and strptime() Behavior。

date.today().strftime(’%a %b %d, %Y’) # Wed Apr 24, 2019datetime.today().isoformat() # 2019-04-24T22:21:38.747318datetime.today().time().strftime(’%Y’) # 1900date.today().strftime(’%S’) # 00

上面是幾個例子,注意在 Python 中像 time 沒有年月日信息時格式化時想要輸出年份會得到不期望的值,但不會象 Java 中那樣報錯。比如下面的 Java 代碼

DateTimeFormatter formatter = DateTimeFormatter.ofPattern('yyyy-MM-dd');LocalDate.now().format(formatter); //2019-04-24LocalTime.now().format(formatter); //Exception java.time.temporal.UnsupportedTemporalTypeException: Unsupported field: YearOfEra

由于 LocalTime.now() 沒有年月日信息,所以無法格式化為 yyyy-MM-dd。

時間, 日期的比較與 timedelta

date, datetime, time 都定義有 __lt__, __le__, __ne__, __gt__, __ge__, __eq__ 函數,所以兩個相同類型的實例之間是可以進行比較時間上的先后的。 其中的 date, datetime 還定義了 __sub__ 和 __rsub__ 函數,因此兩個 date 或兩個 datetime 實例進行相減會得到一個 timedelta 實例 另外, date, datetime 也定義了 __add__, __radd__ 函數,date 或 datetime 可以加減一個 timedelta 來得到一個新的實例

下面看幾個簡單的示例

d1 = datetime.today() # 2019-04-24 23:00:31.672769delta = timedelta(days=2, weeks=1, seconds=-3) # 8 days, 23:59:57d2 = d1 + delta # 2019-05-03 23:00:28.672769d3 = d1 - delta # 2019-04-15 23:00:34.672769 d2 - d1 # 8 days, 23:59:57d2 > d1 # Trued1 < d3 # False datetime.today().date() + delta) # 2019-05-02

注意,不同類型間不能相減,比如用 date 減去一個 datetime 就不合法了。d1 + delta, d1 - delta 和 delta + d1 都沒問題, 但是 delta - d1 就不行了。

timedelta 表示了兩個時間的差值,用它來推算另一個實例的時候不帶有日歷信息,如果想要在日歷上推演就得借助于 calendar。

不可忽略的 time 模塊

前面講到的是 datetime 模塊中的 time 類型,Python 還自帶了 time 模塊,由 import time 引入。它提供了一些很實用的功能

time 包含了完整的如上的 datetime 信息,并不像 datetime 中的 time 不含年月日信息 locatime(), strptime(), gmtime(), asctime(), mktime() 用以構造 time 實例 strftime() 可用來格式化輸出 time.time() 得到當前的 Unix 時間戳 time.sleep(sec) 用來暫停當前線程若干秒

關于 calendar 和 dateutil 的內容有后續

以上就是python 日期處理的詳細內容,更多關于python 日期處理的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 动物解剖台-成蚊接触筒-标本工具箱-负压实验台-北京哲成科技有限公司 | 成都竞价托管_抖音代运营_网站建设_成都SEM外包-成都智网创联网络科技有限公司 | 济南网站建设_济南网站制作_济南网站设计_济南网站建设公司_富库网络旗下模易宝_模板建站 | 蓝莓施肥机,智能施肥机,自动施肥机,水肥一体化项目,水肥一体机厂家,小型施肥机,圣大节水,滴灌施工方案,山东圣大节水科技有限公司官网17864474793 | 小型数控车床-数控车床厂家-双头数控车床 | 诺冠气动元件,诺冠电磁阀,海隆防爆阀,norgren气缸-山东锦隆自动化科技有限公司 | 湖南自考_湖南自学考试网 | 政府园区专业委托招商平台_助力企业选址项目快速落地_东方龙商务集团 | 广域铭岛Geega(际嘉)工业互联网平台-以数字科技引领行业跃迁 | 空调风机,低噪声离心式通风机,不锈钢防爆风机,前倾皮带传动风机,后倾空调风机-山东捷风风机有限公司 | 依维柯自动挡房车,自行式国产改装房车,小型房车价格,中国十大房车品牌_南京拓锐斯特房车 - 南京拓锐斯特房车 | 传动滚筒_厂家-淄博海恒机械制造厂| 隆众资讯-首页_大宗商品资讯_价格走势_市场行情 | 超声波气象站_防爆气象站_空气质量监测站_负氧离子检测仪-风途物联网 | 山东成考网-山东成人高考网 | CTP磁天平|小电容测量仪|阴阳极极化_双液系沸点测定仪|dsj电渗实验装置-南京桑力电子设备厂 | 天津仓库出租网-天津电商仓库-天津云仓一件代发-【博程云仓】 | 识禅_对禅的了解,从这里开始| 市政路灯_厂家-淄博信达电力科技有限公司 | 锂电混合机-新能源混合机-正极材料混料机-高镍,三元材料混料机-负极,包覆混合机-贝尔专业混合混料搅拌机械系统设备厂家 | 冷却塔风机厂家_静音冷却塔风机_冷却塔电机维修更换维修-广东特菱节能空调设备有限公司 | 医院专用门厂家报价-医用病房门尺寸大全-抗菌木门品牌推荐 | 电缆故障测试仪_电缆故障定位仪_探测仪_检测仪器_陕西意联电气厂家 | uv机-uv灯-uvled光固化机-生产厂家-蓝盾机电 | 宠物店加盟_宠物连锁店_开宠物店-【派多格宠物】 | 乐之康护 - 专业护工服务平台,提供医院陪护-居家照护-居家康复 | 上海公众号开发-公众号代运营公司-做公众号的公司企业服务商-咏熠软件 | 帽子厂家_帽子工厂_帽子定做_义乌帽厂_帽厂_制帽厂_帽子厂_浙江高普制帽厂 | 农产品溯源系统_农产品质量安全追溯系统_溯源系统| 六维力传感器_六分量力传感器_模腔压力传感器-南京数智微传感科技有限公司 | 东莞市海宝机械有限公司-不锈钢分选机-硅胶橡胶-生活垃圾-涡电流-静电-金属-矿石分选机 | 温控器生产厂家-提供温度开关/热保护器定制与批发-惠州市华恺威电子科技有限公司 | 橡胶膜片,夹布膜片,橡胶隔膜密封,泵阀设备密封膜片-衡水汉丰橡塑科技公司网站 | 阻燃剂-氢氧化镁-氢氧化铝-沥青阻燃剂-合肥皖燃新材料 | 电机修理_二手电机专家-河北豫通机电设备有限公司(原石家庄冀华高压电机维修中心) | 100_150_200_250_300_350_400公斤压力空气压缩机-舰艇航天配套厂家 | 合肥汽车充电桩_安徽充电桩_电动交流充电桩厂家_安徽科帝新能源科技有限公司 | 专业的新乡振动筛厂家-振动筛品质保障-环保振动筛价格—新乡市德科筛分机械有限公司 | 外观设计_设备外观设计_外观设计公司_产品外观设计_机械设备外观设计_东莞工业设计公司-意品深蓝 | 阜阳在线-阜阳综合门户| 水冷式工业冷水机组_风冷式工业冷水机_水冷螺杆冷冻机组-深圳市普威机械设备有限公司 |