スクリプトのお勉強

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が戻ってきました。まぁそういうものということで。

-スクリプトのお勉強

執筆者:

関連記事

Nuxt.js – CRUDアプリケーションのフォーム/一覧を作成する

前回で作ったAPIのフロントエンドアプリケーションを作ろうと思います。 どういうアプリ? サンプルとして作ったAPIが住所録的だったので、住所録を作りました。 以下の機能があります。 登録(確認付き) …

Dockerを使用してGo言語の開発環境を構築する

なんとなくGolangのブロジェクトに機能追加しようと思いました。 Golangの開発用に、Dockerfile等を準備する手順を書いておこうと思います。 サンプルにnfpm サンプルとして、Fork …

Vue.js 導入編

1.はじめに 近年、web関係で「クライアントサイドJavaScript」というのがトレンドになっているそうです。 「クライアントサイドJavaScript」と、従来のWebアプリケーションとの違いは …

SPAMチェック for OCN の アップデート(v0.7.0)

以前、ここで書いたように、SPAMチェックのThunderbirdプラグインを作りました。 そして、Thunderbirdがアップデートしたので、Pluginもアップデートする必要があります。 正直放 …

Selenium + Python によるアップロードアプリの動作確認プログラム作成

私の周りでは、なぜかSeleniumが流行っている模様です。 私自身は、Webアプリ的なのも作ってますが、あまり使ってなかったので、使ってみようと思います。 前回作成した、Djangoのupload_ …

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