日付文字列との比較時間2時間差:現在の時刻からの距離(異なる時間形式)

日付文字列との比較時間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 = '

  

おすすめ

転載: www.cnblogs.com/andy9468/p/12627927.html