python如何計算兩個時間相差多少秒鐘,分鐘,小時,天,月,年

使用場景:在做上課記錄系統的時候,有上課開始時間和上課結束時間,需要計算這兩個時間的插值,以分鐘為單位。

封裝方法如下:

from datetime import datetimedef sub_seconds(date1: str = "2024-07-11 12:33:33",date2: str = "2024-07-10 12:33:33",
) -> float:date1 = datetime.strptime(date1, "%Y-%m-%d %H:%M:%S")date2 = datetime.strptime(date2, "%Y-%m-%d %H:%M:%S")duration = date1 - date2return duration.secondsdef sub_minute(date1: str = "2024-07-11 12:33:33",date2: str = "2024-07-10 12:33:33",
) -> float:return sub_seconds(date1, date2) / 60def sub_hour(date1: str = "2024-07-11 12:33:33",date2: str = "2024-07-10 12:33:33",
) -> float:return sub_minute(date1, date2) / 60def sub_day(date1: str = "2024-07-11 12:33:33",date2: str = "2024-07-10 12:33:33",
) -> float:return sub_hour(date1, date2) / 60

經過實測,不能使用duration.seconds,而是要改成duration.total_seconds()

def sub_seconds(date1: str = "2024-07-11 12:33:33",date2: str = "2024-07-10 12:33:33",
) -> float:date1 = datetime.strptime(date1, "%Y-%m-%d %H:%M:%S")date2 = datetime.strptime(date2, "%Y-%m-%d %H:%M:%S")duration = date1 - date2return duration.total_seconds()

最終代碼封裝如下:

from datetime import datetime, timedeltadef sub_duration(date1: str = "2024-07-11 12:33:33",date2: str = "2024-07-10 12:33:33",
) -> timedelta:date1 = datetime.strptime(date1, "%Y-%m-%d %H:%M:%S")date2 = datetime.strptime(date2, "%Y-%m-%d %H:%M:%S")return date1 - date2def sub_seconds(date1: str = "2024-07-11 12:33:33",date2: str = "2024-07-10 12:33:33",
) -> float:duration = sub_duration(date1, date2)return duration.total_seconds()def sub_minutes(date1: str = "2024-07-11 12:33:33",date2: str = "2024-07-10 12:33:33",
) -> float:duration = sub_duration(date1, date2)return duration.total_seconds() / 60def sub_hours(date1: str = "2024-07-11 12:33:33",date2: str = "2024-07-10 12:33:33",
) -> float:duration = sub_duration(date1, date2)return duration.total_seconds() / 3600def sub_days(date1: str = "2024-07-11 12:33:33",date2: str = "2024-07-10 12:33:33",
) -> float:duration = sub_duration(date1, date2)return duration.daysdef sub_months(date1: str = "2024-07-11 12:33:33",date2: str = "2024-07-10 12:33:33",
) -> float:duration = sub_duration(date1, date2)return duration.days / 30def sub_years(date1: str = "2024-07-11 12:33:33",date2: str = "2024-07-10 12:33:33",
) -> float:duration = sub_duration(date1, date2)return duration.days / 365

測試代碼如下:

import unittest
from datetime import datetimeimport ztimeclass TestCalcSub(unittest.TestCase):def test_basic(self):date1 = "2024-07-11 01:03:04"date2 = "2021-01-01 02:01:01"date1 = datetime.strptime(date1, "%Y-%m-%d %H:%M:%S")date2 = datetime.strptime(date2, "%Y-%m-%d %H:%M:%S")d = date1 - date2print(d.total_seconds() / (24 * 60 * 60 * 365))def test_sub_seconds(self):date1 = "2024-07-11 01:03:04"date2 = "2021-01-01 02:01:01"print(ztime.calc.sub_seconds(date1, date2))print(ztime.calc.sub_minutes(date1, date2))print(ztime.calc.sub_hours(date1, date2))print(ztime.calc.sub_days(date1, date2))print(ztime.calc.sub_months(date1, date2))print(ztime.calc.sub_years(date1, date2))

測試結果如下:
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/44930.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/44930.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/44930.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【CORS 報錯】跨域請求問題:CORS 多種環境下的解決方案

🔥 個人主頁:空白詩 文章目錄 一、CORS錯誤的常見原因二、解決方案1. Vue3 Vite項目下的解決方案創建Vue3 Vite項目配置Vite的代理發送請求 2. jQuery項目下的解決方案使用CORS請求頭使用JSONP 3. 其他環境下的解決方案使用服務器端代理設置CORS頭使用…

PS拉框選擇工具

Photoshop(PS)中的拉框選擇工具,也稱為選框工具,是圖像處理中非常基礎且強大的工具之一。它允許用戶通過繪制矩形、橢圓形以及單行、單列的選擇框來選定圖像中的特定區域。本教程將詳細介紹選框工具的使用方法、技巧及其屬性設置。…

嵌入式Qt開發C++核心編程知識萬字總結

C核心編程 文章目錄 C核心編程1、程序的內存模型2、函數高級1.函數的默認參數2.函數的占位參數3.函數重載1.基本語法2.注意事項 3、類和對象1.類1.類的組成2.類的訪問權限3.class和struct的區別 2.構造函數(Constructor)1.示例2.特點 3.析構函數&#xf…

前端vue3 登錄頁面 響應式開發

一個登錄頁面 我直接上代碼了 結構是這樣的 Login 頁面 <template><a-layout class"login-box"><a-layout-content class"login-content"><a-row align"middle" justify"center" class"login-content-ma…

蝙蝠避障:為盲人出行插上科技的翅膀

在這個五彩斑斕的世界里&#xff0c;每一步都充滿了探索與驚喜。但對于我這樣的視障者來說&#xff0c;每一次出行都是一場未知的冒險。我時常面臨著難以想象的挑戰&#xff1a;如何安全地穿越繁忙的街道&#xff0c;怎樣準確地識別前方的障礙物&#xff0c;乃至簡單地找到回家…

viewmodel創建及使用分析

1、相關的類 ViewModelStore &#xff1a;管理viewModel實例&#xff0c;內部包含一個Map用來存儲viewmodel&#xff0c;內部包括put、get、clear等方法ViewModelProvider &#xff1a;管理ViewModelStore和Factory&#xff0c;Factory里面有create方法是創建對應的viewmodel的…

Facebook的未來藍圖:從元宇宙到虛擬現實的跨越

隨著科技的不斷演進和社會的數字化轉型&#xff0c;虛擬現實&#xff08;VR&#xff09;和增強現實&#xff08;AR&#xff09;作為下一代計算平臺正逐漸走進人們的視野。作為全球領先的科技公司之一&#xff0c;Facebook正在積極探索并推動這一領域的發展&#xff0c;以實現其…

嫌云服務器太貴,使用內網穿透代替

企業與個人開發者常常面臨一個現實問題&#xff1a;高昂的云服務器成本。隨著業務需求的增長&#xff0c;持續的服務器租賃費用可能成為負擔。然而&#xff0c;在這個充滿創新的時代&#xff0c;一種名為“內網穿透”的技術正逐漸成為解決這一難題的優選方案。本文將探討內網穿…

深度學習基礎與實戰:Python實現

深度學習基礎與實戰&#xff1a;Python實現 深度學習是機器學習的一個重要分支&#xff0c;通過多層神經網絡實現對數據的自動特征提取和建模。本文將介紹深度學習的基礎概念、常用框架以及一個完整的實戰項目&#xff0c;幫助讀者從基礎入門到實際應用。 目錄 深度學習概述…

CF 1986D. Mathematical Problem

原題鏈接&#xff1a;Problem - 1986D - Codeforces 題意&#xff1a;一串長度最多為20的由數字組成的字符串&#xff0c;在這些數字中間可以添加字符串長度減去二數量的符號&#xff0c;加或者乘&#xff0c;例如1234&#xff0c;就可以添加加號或者乘號二個&#xff0c;變成…

vue中el-table前端導出excel數據表格

一、el-table為正常時&#xff0c;導出方法如下&#xff1a; 1.添加導出按鈕 <el-button class"greenLinearbg dc" size"small" click"webExportTotalExcel()" v-if"totalBillShow">導出</el-button>2.導出方法 // we…

Spring開發實踐(二)

EnableAsync 和 Async 注解的使用方法 EnableAsync 和 Async 是Spring框架中的兩個注解&#xff0c;用于啟用和使用異步方法執行。它們可以幫助你在Spring應用程序中實現異步編程&#xff0c;從而提高應用程序的性能和響應速度。 EnableAsync EnableAsync 注解用于啟用Sprin…

ARM Ubuntu 主機安裝指定版本Python

要在你的ARM Linux主機上安裝Python 3.12&#xff0c;你可以從源碼編譯安裝。以下是具體步驟&#xff1a; 步驟1&#xff1a;安裝依賴 首先&#xff0c;確保你有必要的編譯工具和依賴包&#xff1a; sudo apt-get update sudo apt-get install -y build-essential libssl-d…

【每日一練】python的類.對象.成員.行為.方法傳參綜合實例(保姆式教學)

運行結果: 本節課程內容&#xff1a;類的使用 1.掌握類的定義和使用方法 2.掌握類的成員的方法使用 3.掌握self關鍵字的作用 4.定義在類里的函數是類的一種行為&#xff0c;叫方法 5.帶傳參的行為使用方法 類基本分兩部分組成&#xff1a;1.屬性,2.方法 類的使用語法&#xf…

springCloud整合Dubbo案例

前言&#xff1a; 好久沒有使用dubbo了&#xff0c;溫習一下。 一、先搭建一個SpringCloud框架 整體框架如下圖 1. 先創建一個父工程&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4…

開發者必讀:獲取電商API的多種渠道

開發電商軟件往往需要對接電商API&#xff0c;電商API可以從哪些渠道獲取&#xff1f;下面給大家介紹兩種獲取渠道。 一、從電商平臺開放平臺獲取電商API 電商平臺的開放平臺是獲取電商API最直接的渠道&#xff0c;但是電商平臺較多&#xff0c;每一個電商平臺都需要單…

Vue3 引入騰訊地圖 包含標注簡易操作

1. 引入騰訊地圖API JavaScript API | 騰訊位置服務 (qq.com) 首先在官網注冊賬號 并正確獲取并配置key后 找到合適的引入方式 本文不涉及版本操作和附加庫 據體引入參數參考如下圖 具體以鏈接中官方參數為準標題 在項目根目錄 index.html 中 寫入如下代碼 <!-- 引入騰…

Socks5代理為什么比HTTP代理快?

在數字化日益深入的時代&#xff0c;網絡安全和隱私保護成為了公眾關注的焦點。為了應對網絡威脅&#xff0c;保護個人隱私和數據安全&#xff0c;代理技術應運而生。在眾多代理協議中&#xff0c;SOCKS5代理和HTTP代理是兩種較為常見的選擇。然而&#xff0c;為何SOCKS5代理在…

網頁設計零基礎入門:前端技術全攻略

在當今互聯網飛速發展的時代&#xff0c;前端網頁設計已經成為一個備受關注的領域。隨著其重要性的不斷提高&#xff0c;越來越多的專業人士和愛好者開始對前端設計感興趣&#xff0c;希望通過掌握這項技術開辟自己的職業道路。然而&#xff0c;對于新手設計師來說&#xff0c;…

ollama + lobechat 搭建自己的多模型助手

背景 人工智能已經推出了快2年了&#xff0c;各種模型和插件&#xff0c;有漸漸變成熟的趨勢&#xff0c;打造一個類似 hao123網站的人工智能模型入口&#xff0c;也變得有需求了。用戶會去比較多個ai給出的答案&#xff0c;作為程序員想擁有一臺自己的GPU服務器來為自己服務。…