スクリプトのお勉強

Python3/ある日付から日付までの月/日/時間ごとの時刻を算出する

投稿日:

小ネタです。

要するに、時刻A と 時刻B を指定したときの、各時間間隔での時刻取得したかったです。

当初はdateutilを使う方法でなく、自前で実装しようと思ったのですが、面倒なことに気づきました。なのであきらめて、dateutilを使用しています。

なんとなくgoogle Colaboratoryで計算してみました

以下は、google Colaboratoryを使ってみました。GPU使えるそうですがあまり関係なく、サンプル用に使っています。

以下がdateutilの例です。

from dateutil.parser import parse
from dateutil.rrule import rrule, MONTHLY, DAILY , HOURLY

months = list(rrule(MONTHLY, dtstart=parse("20200101T000000"),
                                                           until=parse("20200902T000000")))
days = list(rrule(DAILY, dtstart=parse("20200101T000000"),
                                            until=parse("20200902T000000")))
hours = list(rrule(HOURLY, dtstart=parse("20200822T090000"),
                                                   until=parse("20200923T090000")))

print(months[0])
print(months[1])
print(months[-2])
print(months[-1])

print(days[0])
print(days[1])
print(days[-2])
print(days[-1])

print(hours[0])
print(hours[1])
print(hours[-2])
print(hours[-1])

結果は以下の通りです。

2020-01-01 00:00:00 # 月ごと
2020-02-01 00:00:00
2020-08-01 00:00:00
2020-09-01 00:00:00
2020-01-01 00:00:00 # 日ごと
2020-01-02 00:00:00
2020-09-01 00:00:00
2020-09-02 00:00:00
2020-08-22 09:00:00 # 時間ごと
2020-08-22 10:00:00
2020-09-23 08:00:00
2020-09-23 09:00:00

月ごとの最後をあえて9/2にしてみたのですが、戻ってくるのは、9/2ではなく、
9/1が戻ってきました。まぁそういうものということで。

-スクリプトのお勉強

執筆者:

関連記事

PythonでPKCS#12を使用して暗号/復号する

1. はじめに 仕事でVPN関係のシステム開発をすることになりました。まずは暗号機能の基本を思い出すため、Pythonで、PKCS#12の公開鍵で暗号、秘密鍵で復号するプログラムを作ってみようと思いま …

Djangoアプリサンプル – 画像ファイルアップロード + 顔モザイク(統合編)

顔モザイク Djangoアプリ 前々回 前回 を統合して、Djangoアプリを作成してみようと思います。 前提インストール 前回、ubuntu 18を前提に記述しましたが、CentOS7(CentOS …

Python3でMongoDBを使ってみる(MongoEngine)

仕事している過程で、ふと疑問に思うことがありました。非同期についてです。 非同期問題を解決する方法はたくさんあると思いますが、MongoDBで解決できるのかが気になったので試してみました。 非同期問題 …

(小ネタ) Python3 で読み出すのが一番早いデータフォーマットは?

仕事のネタで、Python3(Django)の設定ファイルをreloadしたい、というのがあります。 つまり設定ファイルをちょこちょこ変更するが、その変更のたびにサービスをリスタートするのではなく設定 …

小ネタ: JavaScriptにてBase64エンコード/デコードする方法

小ネタです。JavaScriptにてBase64エンコード/デコードをしようとして、意外と詰まったので、メモ的に方法を書いておきます。 結論: js-base64ライブラリを使用する これだけです。。 …

    google オプトアウト Click here to opt-out.