日付文字列との比較時間2時間差:現在の時刻からの距離(異なる時間形式)
まず、背景が
日付文字列の間の時間2時間差比較する必要があります。現在の時刻からの距離(異なる時間形式)を
「20200401」
今の時間
の時間差:
0年0ヶ月2日17時間46分16秒
第二に、分析
のPython、使用
書き込み比較関数:gap_start2end( '20200401'、 "現在の日付文字列"、start_fomart = '%Y%の m個%のD'、end_fomart =「%Y-%M-%D%H:%をM:%S「)
戻り時間差の組合せを表す:((0、0、2)、(17、46、16))
第三に、カプセル化された関数法
時間インポート インポート日時 インポート数学 #日付フォーマットから同時に DEF date2obj(date_str = '2015年4月7日午後7時11分21秒 '、フォーマット=「%Y-%M-%D%H:%のM: S% '): ' '' 日付列転送の日付オブジェクト :PARAMのdate_str:日付文字列 :PARAMフォーマット:日付形式の文字列 :リターン:日付オブジェクト d_obj.year出力2015 d_obj.month出力4。 d_obj.day出力7 ' ' t_str = DATE_STR d_obj = datetime.datetime.strptime(t_str、フォーマット) リターンd_objの #1、秒間隔S。 DEF time_seconds_span(start_date1、end_date2、fomart1 =「%Y-%M-%D%H:%M: Sの% 'fomart2 =' %Y-M-%D %% H:%M:%のS「): d1_obj = date2obj(START_DATE1、fomart1) d2_obj = date2obj(end_date2、fomart2) リターン(d2_obj - d1_obj).seconds #2、分分钟时间间隔 DEF time_minutes_span(start_date1、end_date2、fomart1 = '%Y-%M-%D%H:%のM:%のS' 、fomart2 = '%Y-%M-%D%H:%M:%S'): d1_obj = date2obj(start_date1、fomart1) d2_obj = date2obj(end_date2、fomart2) seconds_span =(d2_obj - d1_obj).seconds #向下取整 mins_span = math.floor(seconds_span / 60) mins_span戻り H小时时间间隔、#3 DEF time_hours_span(start_date1、end_date2、fomart1 = '%Y-%M-%D%H:%M:%のS'、 fomart2 = '%Y-%M-%D%H:%M:%のS'): d1_obj = date2obj(start_date1、fomart1) d2_obj = date2obj(end_date2、fomart2) seconds_span =(d2_obj - d1_obj).seconds は切り捨て hours_span = Math.floor(seconds_span /(60 * 60)) 戻りhours_span 。#4、間隔Dの日。または時間、分、秒、計算せずに、日、月、年の数だけをカウント、時間、分、秒を無視します。 date_days_span DEF(START_DATE1、END_DATE2、fomart1 = 'M - %%% Y-D'、fomart2 = 'M - %%% Y-D'): d1_obj = date2obj(START_DATE1、fomart1) d2_obj = date2obj(END_DATE2、fomart2) #わずか数日差を取ります。等価は切り捨て。 = days_span(d2_obj - d1_obj).days リターンdays_spanの 。#5月の月の時間間隔の数。または時間、分、秒、計算せずに、日、月、年の数だけをカウント、時間、分、秒を無視します。 date_months_span DEF(START_DATE1、END_DATE2、fomart1 = 'M - %%% Y-D'、fomart2 = 'M - %%% Y-D'): d1_obj = date2obj(START_DATE1、fomart1) d2_obj = date2obj(END_DATE2、fomart2) #切り捨て。わずか数日かかります。 = days_span(d2_obj - d1_obj).days months_span = Math.floor(days_span / 30) months_span返す 。#6、年の年間隔の数。または時間、分、秒、計算せずに、日、月、年の数だけをカウント、時間、分、秒を無視します。 date_years_span DEF(START_DATE1、END_DATE2、fomart1 = 'M - %%% Y-D'、fomart2 = 'M - %%% Y-D'): d1_obj = date2obj(START_DATE1、fomart1) d2_obj = date2obj(END_DATE2、fomart2) #切り捨て。わずか数日かかります。 = days_span(d2_obj - d1_obj).days years_span = Math.floor(days_span /(30 * 12である)) を返すyears_span DEF gap_start2end(start_str、end_str、start_fomart =「%Y-M-%D %% H:%のM:% S 'end_fomart =' %Y-M-%D %% H:%M:%のS '): ' '' 二つの時間差の時間比較 :PARAM start_str:開始日時列 :PARAM end_str:タイムオフ日付列 :のparam start_fomart:読み込み開始時の日付文字列の書式 :PARAM end_fomart:時刻を読み取る期限日付文字列の書式 :リターン:回数差アレイ組成物は、((Y、M、D)、(H、分、秒)) #が挙げ: 「2009-02 -28 0時00分04秒" '2010年3月1日午前1時02分03秒' の出力((1、0、6)、(1、1、59)) 意味:1を0ヶ月6日、1時間、1分59秒の時間間隔で #時間プッシュバック説明: #sum_days = Y * 30 * 12である+ M * 30 + D #sum_seconds = sum_days * 24 * 60 * 60 + H * 60 * 60 +分* 60 +秒 '' ' の差番号# years_gap = date_years_span (start_str、end_str、start_fomart、end_fomart ) ヶ月差位 months_gap = date_months_span(start_str、end_str、start_fomart、end_fomart ) 日の#差数 days_gap = date_days_span(start_str、end_str、start_fomart、end_fomart ) #除去組合せ日は数を示し 差番号#時間 years_gap = yと 12 months_gap%= Mである D = 30%days_gap hours_gap = time_hours_span(start_str、end_str、start_fomart、end_fomart) 分差の#番号 mins_gap = time_minutes_span(start_str、end_str、start_fomart、end_fomart) #秒差 、seconds_gap = time_seconds_span(start_str、end_str start_fomart、end_fomart) に要する時間の#の組み合わせが表す H = hours_gap 分= mins_gap%60 秒= seconds_gap%60 リターン((Y、M、D)を、(H、分、秒)) DEF time2date(timeint = 1565673941、フォーマット= "%D %% Y-M-%のH:%M:%のS"): '' ' タイムスタンプ日付列ユニットS、Sへ PARAM timeint:タイムスタンプ :リターン:日付文字列 出力例説明: (1565673941、 "%Y-%M- %D%H:%M:%のS") 出力午後1時25分41秒2019年8月13日 (1565673941、" %Y-M-%D%「)出力2019年8月13日 (1565673941、 "Yの%のM%のDの%")出力20190813 '' ' = time.localtime LOCAL_TIME(timeint) data_head time.strftime =(フォーマット、LOCAL_TIME) 戻りdata_head IF __name__ == '__main__': は##日付フォーマットから同じ時間。 START_DATE =# '2009-02-28夜12時00分04秒' #END_DATE = '2010-03-01一時02分03秒' #チャ= gap_start2end(START_DATE、END_DATE) #印刷(チャ) #第二に、異なる日付形式時間の距離。今の時間距離 START_DATE = '20、200401' END_DATE = time2date(time.time()) cha_now = gap_start2end(START_DATE、END_DATE、start_fomart = '%のM%D%Y'、end_fomart = '