日時モジュールは日時処理専用です
一般的に使用される機能は次のとおりです。
import datetime
print(datetime.datetime.now())
# datetime.today()
#2020- 09- 2123:13:05.245157 print(datetime.datetime.today())
#2020-09-2123:13:57.062886
print(datetime.datetime.strptime('2020/08/09',format('%Y/%m/%d')))
#2020- 08- 0900:00:00 print(datetime.datetime.strptime('20-08-09',format('%y-%m-%d')))
#2020-08-0900:00:00
時刻のタプルを受け取り、読み取り可能な文字列で現地時間を返します。形式はパラメーターformatによって決定されます。
dt = datetime.datetime.now()print("======================")print('時間:(%Y-%m-%d %H:%M:%S %f): ',dt.strftime('%Y-%m-%d %H:%M:%S %f'))print('時間:(%Y-%m-%d %H:%M:%S %p): ', dt.strftime('%y-%m-%d %I:%M:%S %p'))print('今週の略語%%a: %s '% dt.strftime('%a'))print('1週間中%%A: %s '% dt.strftime('%A'))print('月の省略形%%b: %s '% dt.strftime('%b'))print('月間バッチ%%B: %s '% dt.strftime('%B'))print('日付時刻%%c: %s '% dt.strftime('%c'))print('今日は今週の最初です%s日'% dt.strftime('%w'))print('今日は今年の最初です%s日'% dt.strftime('%j'))print('今週は今年の最初です%s週'% dt.strftime('%U'))print('今日は月の最初です%s日'% dt.strftime('%d'))'''
====================== 時間:(%Y-%m-%d %H:%M:%S %f):2020-09-2123:30:51573645時間:(%Y-%m-%d %H:%M:%S %p):20-09-2111:30:51 PM
今週の略語%a: Mon
1週間中%A: Monday
月の省略形%b: Sep
月間バッチ%B: September
日付時刻%c: Mon Sep 2123:30:512020
今日は週の最初の日です
今日は今年の265日目です
今週は今年の38週目です
今日はその月の21日です
'''
コードを書くとき、それはしばしば時間、日付、そしてタイムスタンプの相互変換を伴います。
# インポートモジュール
import time, datetime
# 文字タイプ時間
testStr ='2020-09-21 23:26:33'
# 時間配列に変換する
timeArray = time.strptime(testStr,"%Y-%m-%d %H:%M:%S")print(timeArray)
# timeArrayはtmを呼び出すことができます_年など
print(timeArray.tm_year) # 2020
# タイムスタンプに変換
timeStamp =int(time.mktime(timeArray))print(timeStamp) # 1600701993
# 結果は次のとおりです。
time.struct_time(tm_year=2020, tm_mon=9, tm_mday=21, tm_hour=23, tm_min=26, tm_sec=33, tm_wday=0, tm_yday=265, tm_isdst=-1)20201600701993
testStr1 ="2020-09-21 23:40:00"
# 配列に変換
timeArray = time.strptime(testStr1,"%Y-%m-%d %H:%M:%S")
# 他の表示形式に変換する
otherStyleTime = time.strftime("%Y/%m/%d %H:%M:%S", timeArray)print(otherStyleTime)
tss3 ="2020/09/21 23:40:00"
timeArray = time.strptime(tss3,"%Y/%m/%d %H:%M:%S")
otherStyleTime = time.strftime("%Y-%m-%d %H:%M:%S", timeArray)print(otherStyleTime)"""
- - - - - - - - - - - - - - - - - - - - - - - 2020 /09/2123:40:002020-09-2123:40:00======================"""
# 使用時間
timeStamp =1600701993
timeArray = time.localtime(timeStamp)
otherStyleTime = time.strftime("%Y--%m--%d %H:%M:%S", timeArray)print(otherStyleTime) # 2020--09--2123:26:33
# 日時を使用する
timeStamp =1600101993
dateArray = datetime.datetime.fromtimestamp(timeStamp)
otherStyleTime = dateArray.strftime("%Y--%m--%d %H:%M:%S")print(otherStyleTime) # 2020--09--1500:46:33
# 日時を使用し、utc時間を指定すると、差は8時間になります
timeStamp =1600201993
dateArray = datetime.datetime.utcfromtimestamp(timeStamp)
otherStyleTime = dateArray.strftime("%Y--%m--%d %H:%M:%S")print(otherStyleTime) # 2020--09--1520:33:13
print("+++++++++++++++++++++++++++++++++++++++++++")
# 現在のタイムスタンプを取得する時間
now =int(time.time()) # 1533952277
timeArray = time.localtime(now)print(timeArray)
otherStyleTime = time.strftime("%Y--%m--%d %H:%M:%S", timeArray)print(otherStyleTime)
# 結果は次のとおりです。
"""
time.struct_time(tm_year=2020, tm_mon=9, tm_mday=21, tm_hour=23, tm_min=45, tm_sec=53, tm_wday=0, tm_yday=265, tm_isdst=0)2020--09--2123:45:53"""
# 現在の時刻を取得するdatetime、配列形式
now = datetime.datetime.now()print(now)
otherStyleTime = now.strftime("%Y--%m--%d %H:%M:%S")print(otherStyleTime)
# 結果は次のとおりです。
"""
2020-09-2123:45:53.5434872020--09--2123:45:53"""
ここで言及されている文字列は、一般的な意味での文字列ではありません。つまり、日付タイプのデータを読み取るときに、文字列が時間内に解析されていない場合、それは日付タイプではないということです。この時点での文字列は、タイムスタンプとどのように関連している必要がありますか。間で変換しますか?
一般的に使用される日付と時刻には、次の3つの形式があります。
import time; #タイムモジュールを紹介する
ticks = time.time()print("現在のタイムスタンプは:", ticks)
現在のタイムスタンプは:1600704429.9781017
tm_struct = time.localtime(ticks)print(tm_struct)
time.struct_time(tm_year=2020, tm_mon=9, tm_mday=22, tm_hour=0, tm_min=8, tm_sec=2, tm_wday=1, tm_yday=266, tm_isdst=0)
グリニッジ平均時間を取得する必要がある場合は、** time.gmtime()関数**を使用できます。
# グリニッジ標準時
print(time.gmtime(ticks))
time.struct_time(tm_year=2020, tm_mon=9, tm_mday=21, tm_hour=16, tm_min=9, tm_sec=18, tm_wday=0, tm_yday=265, tm_isdst=0)
print(time.mktime(tm_struct))1600704621.0
多くの変換メソッドがありますが、最も単純なのは** asctime():**です。
time_str = time.asctime( tm_struct )print(time_str)"""
Tue Sep 2200:12:142020"""
フォーマットを正確に制御したい場合は、** strftime():**を使用できます。
tm_1=time.strftime("%Y-%m-%d %H:%M:%S", tm_struct)
tm_2=time.strftime("%a %b %d %H:%M:%S %Y", tm_struct)print(tm_1)print(tm_2)"""
2020-09-2200:14:13
Tue Sep 2200:14:132020"""
関数** time.strptime()**はこの変換を完了することができます、以下は例です
tm2_struct = time.strptime('2020-09-22 01:34:50',"%Y-%m-%d %H:%M:%S")print(tm2_struct)"""
time.struct_time(tm_year=2020, tm_mon=9, tm_mday=22, tm_hour=1, tm_min=34, tm_sec=50, tm_wday=1, tm_yday=266, tm_isdst=-1)"""
**time.ctime()は time.asctime()**に似ています。次の例を参照してください。
tm_3=time.ctime(ticks)print(tm_3)"""
Tue Sep 2200:17:542020"""
# 出力文字列を正確に制御したい場合、既存の関数は見つかりませんでした。最初にタプルに変換してから、文字列にフォーマットすることしかできないと推定されています。
# 私は変換関数を書きました:
def time2str(ticks, fmt='%a %b %d %H:%M:%S %Y'):
tm = time.localtime(ticks)return time.strftime(fmt, tm)
def str2time(str, fmt='%a %b %d %H:%M:%S %Y'):
tm = time.strptime(str, fmt)return time.mktime(tm)
# こちらも参考機能です
宿題の練習
**pandas.to_datetime *( arg 、 errors = 'raise' 、 utc = None 、 format = None 、 unit = None *)文字列を日付関数に変換します
# 時間文字列形式を変換します。方法2:
import pandas as pd
start = pd.to_datetime("20200922")print("===================================")print(start)
s=start.strftime('%Y-%m-%d') #日時を文字列に変換して使用する'%Y-%m-%d'フォーマット出力
print(s)print("===================================")"""
==================================2020-09-2200:00:002020-09-22=================================="""
書き込み機能:
import time; #タイムモジュールを紹介する
from pandas import DatetimeIndex
def date_range(cls, start=None, end=None, periods=None, freq=None, input_format=None, out_format=None):"""
時系列を生成する
: param start:シーケンス開始時間
: param end:シーケンス終了時間,スタートが与えられたとき,終了時間には終了が含まれます
: param periods: int,生成された時系列の長さ
: param freq:時系列を生成するための時間間隔
: param out_format:フォーマットされた文字列を出力するかどうか,出力の出力形式を指定します."%Y-%m-%d %H:%M:%S":param input_format:開始または終了が文字列であり、時刻形式を自動的に推測できない場合は、形式を指定する必要があります
: return:[date or date_str]"""
start = pd.to_datetime("20200918")
end = pd.to_datetime("20200922")
pd.date_range(start, end)DatetimeIndex(['2020-09-28','2020-09-29','2020-09-30','2020-09-13','2020-06-01','2020-06-02'])
例1:
# 例1:
dates =["20200912","20200922"]
def create_dates(dates):"""
: param dates:["20200912","20200922"]:return:"""
start = pd.to_datetime(dates[0])
end = pd.to_datetime(dates[1])
dates = pd.date_range(start, end) #時間文字列のリストを生成する
dates = dates.strftime('%Y%m%d') #時間データをフォーマットする
returnlist(dates)print("例1")print(create_dates(dates))"""
例1['20200912','20200913','20200914','20200915','20200916','20200917','20200918','20200919','20200920','20200921','20200922']"""
例2:
# 例2
df = pd.DataFrame({'year':[2019,2020],'month':[2,3],'day':[4,5]})
pd.to_datetime(df)print("例2")print(pd.to_datetime(df))"""
例202019-02-0412020-03-05
dtype: datetime64[ns]"""
Recommended Posts