質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
DateTime

多くのプログラミング言語におけるDateTimeオブジェクトは、日付と時間に関する演算と出力を行います。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

4回答

1926閲覧

datetimeを用いて「年月日時間」のリストを作る

loreeeee

総合スコア40

DateTime

多くのプログラミング言語におけるDateTimeオブジェクトは、日付と時間に関する演算と出力を行います。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2018/07/04 12:26

python datetimeモジュールを使って最初と最後の日を

python

1 2start_day = 2018020100 # (%Y:2018, %m:02 %d:02 %H:00) 3end_day = 2018020723

のように指定することでdate_listに

python

1date_list = [2018020100, 2018020101, 2018020102, ... , 2018020720, 2018020721, 2018020722, 2018020723]

のように1時間おきの日付リストを作成したいのですが,どのようにすればいいでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

普通にループさせる。

python

1import datetime 2 3# intは面倒だからとりあえず文字列にしとく 4start = str(2018020100) 5end = str(2018020723) 6 7start_dt = datetime.datetime.strptime(start, "%Y%m%d%H") 8end_dt = datetime.datetime.strptime(end, "%Y%m%d%H") 9 10lst = [] 11t = start_dt 12while t <= end_dt: 13 lst.append(t) 14 t += datetime.timedelta(hours=1) 15 16print([int(x.strftime("%Y%m%d%H")) for x in lst]) 17""" => 18[2018020100, 2018020101, 2018020102, 2018020103, 2018020104, 2018020105, 2018020106, 2018020107, 2018020108, 2018020109, 2018020110, 2018020111, 2018020112, 2018020113, 2018020114, 2018020115, 2018020116, 2018020117, 2018020118, 2018020119, 2018020120, 2018020121, 2018020122, 2018020123, 2018020200, 2018020201, 2018020202, 2018020203, 2018020204, 2018020205, 2018020206, 2018020207, 2018020208, 2018020209, 2018020210, 2018020211, 2018020212, 2018020213, 2018020214, 2018020215, 2018020216, 2018020217, 2018020218, 2018020219, 2018020220, 2018020221, 2018020222, 2018020223, 2018020300, 2018020301, 2018020302, 2018020303, 2018020304, 2018020305, 2018020306, 2018020307, 2018020308, 2018020309, 2018020310, 2018020311, 2018020312, 2018020313, 2018020314, 2018020315, 2018020316, 2018020317, 2018020318, 2018020319, 2018020320, 2018020321, 2018020322, 2018020323, 2018020400, 2018020401, 2018020402, 2018020403, 2018020404, 2018020405, 2018020406, 2018020407, 2018020408, 2018020409, 2018020410, 2018020411, 2018020412, 2018020413, 2018020414, 2018020415, 2018020416, 2018020417, 2018020418, 2018020419, 2018020420, 2018020421, 2018020422, 2018020423, 2018020500, 2018020501, 2018020502, 2018020503, 2018020504, 2018020505, 2018020506, 2018020507, 2018020508, 2018020509, 2018020510, 2018020511, 2018020512, 2018020513, 2018020514, 2018020515, 2018020516, 2018020517, 2018020518, 2018020519, 2018020520, 2018020521, 2018020522, 2018020523, 2018020600, 2018020601, 2018020602, 2018020603, 2018020604, 2018020605, 2018020606, 2018020607, 2018020608, 2018020609, 2018020610, 2018020611, 2018020612, 2018020613, 2018020614, 2018020615, 2018020616, 2018020617, 2018020618, 2018020619, 2018020620, 2018020621, 2018020622, 2018020623, 2018020700, 2018020701, 2018020702, 2018020703, 2018020704, 2018020705, 2018020706, 2018020707, 2018020708, 2018020709, 2018020710, 2018020711, 2018020712, 2018020713, 2018020714, 2018020715, 2018020716, 2018020717, 2018020718, 2018020719, 2018020720, 2018020721, 2018020722, 2018020723] 19""" 20

投稿2018/07/04 12:44

hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

loreeeee

2018/07/04 22:20

ありがとうございます。自分の中で読みやすいコードだったのでベストアンサーにさせていただきます!
guest

0

Python

1# -*- coding: utf-8 -*- 2from datetime import datetime, timedelta 3 4 5def date_generator(start_day:int, end_day:int): 6 assert start_day < end_day 7 current_dt = datetime.strptime(str(start_day), "%Y%m%d%H") 8 end_dt = datetime.strptime(str(end_day), "%Y%m%d%H") 9 10 while current_dt <= end_dt: 11 yield current_dt 12 current_dt += timedelta(hours=1) 13 14 15def main() -> None: 16 date_list = list(map(lambda x: int(x.strftime("%Y%m%d%H")), date_generator(2018020100, 2018020723))) 17 print(date_list) 18 19 20if __name__ == "__main__": 21 main() 22

◇参考情報
大量のバイナリファイルから破損ファイルの有無,ファイルの存在有無をチェックしたい

投稿2018/07/04 16:09

umyu

総合スコア5846

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Python

1from datetime import datetime, timedelta 2 3... 4 5dst = [] 6tmp_time = start_time 7 8while tmp_time <= end_time: 9 dst.append(tmp_time) 10 tmp_time += timedelta(hours=1)

start_timeやend_timeの作り方はご自身で考えましょう。

投稿2018/07/04 12:36

LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

python

1from datetime import datetime, timedelta 2 3start_day = datetime(2018,2,2 ,0) 4end_day = datetime(2018,2, 7, 23) 5td=end_day-start_day 6[start_day+timedelta(hours=i) for i in range(td.days*24+td.seconds//3600 +1)]

投稿2018/07/04 15:05

WathMorks

総合スコア1582

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問