こんにちは、JS2IIUです。
今回はStreamlit上で日付や時間を入力するのに便利な、日付選択カレンダーと時刻入力フィールドの使い方を見ていきたいと思います。今回もよろしくお願いします。
1. はじめに
こんにちは!今回は、Pythonで手軽にWebアプリを作成できる「Streamlit」で、日付や時刻を入力する方法をご紹介します。
たとえば、予約フォームや日報アプリを作るとき、ユーザーに「日付」や「時間」を入力してもらいたい場面ってありますよね?
Streamlitには、そんな時に便利な st.date_input(日付選択) と st.time_input(時刻入力) という機能があります。
2. st.date_input:日付選択カレンダーの使い方
✅ ステップ①:基本的な使い方
まずは、もっともシンプルな使い方を見てみましょう。
import streamlit as st
st.title("日付の入力デモ")
# 日付を選ぶカレンダーを表示
date = st.date_input("日付を選んでください")
# 選んだ日付を表示
st.write("あなたが選んだ日付は:", date)これを実行すると、日付選択カレンダーが表示され、選んだ日付が下に表示されます。


✅ ステップ②:デフォルト値を設定する
特定の日付を初期値として表示させることもできます。
import datetime
default_date = datetime.date(2025, 1, 1)
date = st.date_input("日付を選んでください", value=default_date)このように、value引数で初期日付を指定できます。datetime.date(年, 月, 日)の形式で日付を設定します。

✅ ステップ③:入力可能な日付の範囲を制限する
ユーザーが選べる日付を制限したい場合は、min_valueとmax_valueを使います。
today = datetime.date.today()
date = st.date_input(
"日付を選んでください",
min_value=today,
max_value=today + datetime.timedelta(days=30)
)この例では、今日から30日後までの日付だけが選べるようになります。

✅ ステップ④:複数日を選ぶ(期間選択)
st.date_inputは、リスト形式で初期値を渡すことで開始日と終了日を選ぶUIにもなります。
start_date = datetime.date(2025, 4, 1)
end_date = datetime.date(2025, 4, 7)
dates = st.date_input("期間を選んでください", [start_date, end_date])
if isinstance(dates, tuple):
st.write("開始日:", dates[0])
st.write("終了日:", dates[1])
3. st.time_input:時刻入力フィールドの使い方
✅ ステップ①:基本の使い方
時刻を選ばせるには、st.time_inputを使います。
import datetime
time = st.time_input("時刻を選んでください")
st.write("あなたが選んだ時刻は:", time)デフォルトでは、現在時刻(もしくは00:00)で表示されます。


✅ ステップ②:初期値を指定する
default_time = datetime.time(9, 30)
time = st.time_input("時刻を選んでください", value=default_time)datetime.time(時, 分)の形式で初期時刻を設定できます。
✅ ステップ③:時間の間隔(ステップ)を設定する
15分刻みや30分刻みで時刻を選ばせたいときは、step引数を使います。step引数にはtimedelta型を渡してください。
time = st.time_input("時刻を選んでください", step=datetime.timedelta(minutes=15))4. 日付+時刻をセットで使うケース
よくあるのが、「日付と時刻をセットで1つの日時として使いたい」という場面です。
Streamlitでは、datetime.combineを使うことで、選んだ日付と時刻を1つのdatetimeオブジェクトにまとめることができます。
from datetime import datetime
date = st.date_input("日付を選んでください")
time = st.time_input("時刻を選んでください")
datetime_value = datetime.combine(date, time)
st.write("選んだ日時:", datetime_value)これで「2025-04-21 09:30:00」のような形で日時が扱えます。

5. よくあるエラー・注意点
🔸 ローカル時間の扱い
Streamlitは実行環境によってタイムゾーンの影響を受けることがあります。
特に時差のあるサーバー上で動かすときは注意が必要です。
🔸 型の違いに注意
st.date_input→datetime.date型st.time_input→datetime.time型
型が違うため、直接足したり比較したりはできません。datetime.combineを使って統一しましょう。
6. まとめ
今回は、Streamlitの st.date_input と st.time_input の使い方について、以下のポイントを解説しました:
- 日付選択と時刻入力の基本的な使い方
- 初期値や範囲の指定方法
- 日付と時刻を組み合わせて1つの日時にする方法
これらを使えば、予約フォームや日程調整アプリなど、さまざまな場面で活用できます。
とても便利なので、ぜひ自分のアプリにも取り入れてみてください!
7. おまけ:st.formと組み合わせて使う
より実践的な使い方として、st.formを使うとボタンを押してから送信するフォーム形式にもできます。
with st.form("予約フォーム"):
date = st.date_input("予約日を選んでください")
time = st.time_input("開始時刻を選んでください")
submitted = st.form_submit_button("送信")
if submitted:
st.write(f"予約日時:{datetime.combine(date, time)}")これで、ユーザーが日付と時間を選んで「送信」を押したときにだけ処理が走るようになります。

8. 参考リンク
最後に書籍のPRです。
24年9月に出版された「ハイパーモダンPython-信頼性の高いワークフローを構築するモダンテクニック」、Claudio Jolowicz著、嶋田、鈴木訳。開発環境の構築、プロジェクトの管理、テストに関して実践的な内容でとても参考になる一冊です。ぜひ手に取ってみてください。
最後まで読んでいただきありがとうございます。


コメント