1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Pythonプログラムに パラメータとして日付を渡してみました

Posted at

概要

データ分析において、データ抽出に日付を指定したくなります、、、、そんな理由でサクッと作ってみました。

実行環境

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ログ等を日付範囲指定して引っこ抜けそうです、、、、、、

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?