概要
データ分析において、データ抽出に日付を指定したくなります、、、、そんな理由でサクッと作ってみました。
実行環境
macOS Monterey 12.1
python 3.8.12
実行プログラム
DateParameter.py
import argparse
from datetime import datetime, timedelta
import pytz
# 日付の表示
def DisplayDate(start_date, end_date):
print("\n\t ##### From : {} To : {} ##### \n".format(start_date, end_date))
# パラメータの文字列を日付型に変換 StartDate
# 指定した日付の 00:00:00 〜
def valid_date_s(s):
try:
strp_dt = datetime.strptime(s, "%Y-%m-%d")
return strp_dt.astimezone(pytz.timezone('Asia/Tokyo'))
except ValueError:
msg = "Not a valid date: '{0}'.".format(s)
raise argparse.ArgumentTypeError(msg)
# パラメータの文字列を日付型に変換 EndDate
# 指定した日付の 〜 23:59:59
def valid_date_e(s):
try:
dt = datetime.strptime(s, "%Y-%m-%d")
strp_dt = dt + timedelta(days=1) - timedelta(seconds=1)
return strp_dt.astimezone(pytz.timezone('Asia/Tokyo'))
except ValueError:
msg = "Not a valid date: '{0}'.".format(s)
raise argparse.ArgumentTypeError(msg)
# メイン
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='パラメータとして日付を渡す')
parser.add_argument('-s', '--startdate', type=valid_date_s, help='From日付 yyyy-mm-dd', required=True)
parser.add_argument('-e', '--enddate', type=valid_date_e, help='To日付 yyyy-mm-dd', required=True)
args = parser.parse_args()
if args.startdate < args.enddate :
DisplayDate(args.startdate, args.enddate)
else :
print("\t 日付範囲の指定が間違っています \n")
プログラムのHELP表示
$ python DateParameter.py -h
usage: DateParameter.py [-h] -s STARTDATE -e ENDDATE
パラメータとして日付を渡す
optional arguments:
-h, --help show this help message and exit
-s STARTDATE, --startdate STARTDATE
From日付 yyyy-mm-dd
-e ENDDATE, --enddate ENDDATE
To日付 yyyy-mm-dd
プログラムの実行(正常)
## From日付とTo日付を同日定義
$ python DateParameter.py -s 2022-02-16 -e 2022-02-16
##### From : 2022-02-16 00:00:00+09:00 To : 2022-02-16 23:59:59+09:00 #####
## From日付とTo日付に異なる日付を定義
$ python DateParameter.py -s 2022-02-01 -e 2022-02-28
##### From : 2022-02-01 00:00:00+09:00 To : 2022-02-28 23:59:59+09:00 #####
プログラムの実行(異常)
## From日付のみ(To日付のみ)指定
$ python DateParameter.py -s 2022-02-01
usage: DateParameter.py [-h] -s STARTDATE -e ENDDATE
DateParameter.py: error: the following arguments are required: -e/--enddate
## 間違った日付フォーマットで定義
$ python DateParameter.py -s 2022-02-01 -e 2022/02/28
usage: DateParameter.py [-h] -s STARTDATE -e ENDDATE
DateParameter.py: error: argument -e/--enddate: Not a valid date: '2022/02/28'.
## 存在しない日付を定義
$ python DateParameter.py -s 2022-02-01 -e 2022-02-30
usage: DateParameter.py [-h] -s STARTDATE -e ENDDATE
DateParameter.py: error: argument -e/--enddate: Not a valid date: '2022-02-30'.
## From日付よりTo日付が過去として定義
$ python DateParameter.py -s 2022-02-01 -e 2022-01-20
日付範囲の指定が間違っています
まとめ
AzureのActivityログ等を日付範囲指定して引っこ抜けそうです、、、、、、