Skip to main content

Streamlit DatePicker

PyPI GitHub GitHub issues GitHub pull requests

Project Introduction

streamlit-date-picker is a date picker designed for use with Streamlit. It allows users to easily select a range of dates and times.

Try out a demo here: Streamlit App

Streamlit Date Picker

Installation

Install the package using the following command:

pip install streamlit-date-picker

Usage

import streamlit as st
from datetime import datetime, timedelta

from streamlit_date_picker import date_range_picker, date_picker, PickerType

st.set_page_config(
    page_title="Streamlit Date Picker",
    page_icon="📅",
    layout="wide",
)

st.title('Streamlit Date Picker')
st.subheader('Date Picker')
st.markdown("#### 1.Date Picker")
default_value = datetime.now()
select_date = date_picker(picker_type=PickerType.date, value=default_value, key='date_picker')

if select_date:
    st.write(f"Date Picker: {select_date}")

st.markdown("#### 2.Available Date Picker")
default_value = datetime.now()
available_datas = [
    datetime.now() - timedelta(days=4),
    datetime.now() - timedelta(days=3),
    datetime.now() - timedelta(days=1),
    datetime.now(),
    datetime.now() + timedelta(days=1),
    datetime.now() + timedelta(days=3),
    datetime.now() + timedelta(days=4),
]
select_date = date_picker(picker_type=PickerType.date, value=default_value, key='available_date_picker', available_dates=available_datas)

if select_date:
    st.write(f"Date Picker: {select_date}")

st.subheader('Date Range Picker')
st.markdown("#### 1.Time Range Picker")
default_start, default_end = datetime.now() - timedelta(minutes=30), datetime.now()
refresh_value = timedelta(minutes=30)
refresh_buttons = [{
                    'button_name': 'Refresh Last 30 Minutes',
                    'refresh_value': refresh_value
                  }]
    
date_range_string = date_range_picker(picker_type=PickerType.time,
                                      start=default_start, end=default_end,
                                      key='time_range_picker',
                                      refresh_buttons=refresh_buttons)
if date_range_string:
    start, end = date_range_string
    st.write(f"Time Range Picker [{start}, {end}]")

st.markdown("#### 2.Date Range Picker")
default_start, default_end = datetime.now() - timedelta(days=1), datetime.now()
refresh_value = timedelta(days=1)
refresh_buttons = [{
                    'button_name': 'Refresh Last 1 Days',
                    'refresh_value': refresh_value
                  }]
    
date_range_string = date_range_picker(picker_type=PickerType.date,
                                      start=default_start, end=default_end,
                                      key='date_range_picker',
                                      refresh_buttons=refresh_buttons)
if date_range_string:
    start, end = date_range_string
    st.write(f"Date Range Picker [{start}, {end}]")

st.markdown("#### 3.Week Range Picker")
default_start, default_end = datetime.now() - timedelta(days=7), datetime.now()
refresh_value = timedelta(days=7)
refresh_buttons = [{
                    'button_name': 'Refresh Last 1 Week',
                    'refresh_value': refresh_value
                  }]
date_range_string = date_range_picker(picker_type=PickerType.week,
                                      start=default_start, end=default_end,
                                      key='week_range_picker',
                                      refresh_buttons=refresh_buttons)
if date_range_string:
    start, end = date_range_string
    st.write(f"Week Range Picker [{start}, {end}]")

st.markdown("#### 4.Month Range Picker")
default_start, default_end = datetime.now() - timedelta(days=30), datetime.now()
refresh_value = timedelta(days=30)
refresh_buttons = [{
                    'button_name': 'Refresh Last 1 Month',
                    'refresh_value': refresh_value
                  }]
date_range_string = date_range_picker(picker_type=PickerType.month,
                                      start=default_start, end=default_end,
                                      key='month_range_picker',
                                      refresh_buttons=refresh_buttons)
if date_range_string:
    start, end = date_range_string
    st.write(f"Month Range Picker [{start}, {end}]")

st.markdown("#### 5.Year Range Picker")
default_start, default_end = datetime.now() - timedelta(days=365), datetime.now()
refresh_value = timedelta(days=365)
refresh_buttons = [{
                    'button_name': 'Refresh Last 1 Year',
                    'refresh_value': refresh_value
                  }]
date_range_string = date_range_picker(picker_type=PickerType.year,
                                      start=default_start, end=default_end,
                                      key='year_range_picker',
                                      refresh_buttons=refresh_buttons)
if date_range_string:
    start, end = date_range_string
    st.write(f"Year Range Picker [{start}, {end}]")

st.markdown("#### 6.Available Date Range Picker")
default_start, default_end = datetime.now() - timedelta(days=1), datetime.now()
available_datas = [
    datetime.now() - timedelta(days=4),
    datetime.now() - timedelta(days=3),
    datetime.now() - timedelta(days=1),
    datetime.now(),
    datetime.now() + timedelta(days=1),
    datetime.now() + timedelta(days=3),
    datetime.now() + timedelta(days=4),
]
date_range_string = date_range_picker(picker_type=PickerType.date,
                                      start=default_start, end=default_end,
                                      available_dates=available_datas,
                                      key='available_date_range_picker',)
if date_range_string:
    start, end = date_range_string
    st.write(f"Date Range Picker [{start}, {end}]")

st.markdown("#### 7.Mutil Refresh Button Date Time Range Picker")
default_start, default_end = datetime.now() - timedelta(minutes=30), datetime.now()
refresh_buttons = [
            {
                'button_name': 'Refresh Last 30 Minutes',
                'refresh_value': timedelta(minutes=30)
            },
            {
                'button_name': 'Refresh Last 60 Minutes',
                'refresh_value': timedelta(minutes=60)
            }
        ]
date_range_string = date_range_picker(picker_type=PickerType.time,
                                      start=default_start, end=default_end,
                                      key='mutil_time_range_picker',
                                      refresh_buttons=refresh_buttons)
if date_range_string:
    start, end = date_range_string
    st.write(f"Time Range Picker [{start}, {end}]")

Parameter

Range Picker

  • picker_type: Default picker type, type: str, options: time, date, week, month, quarter, year.
  • key: Picker key, default value: None.
  • start: Default start datetime, type: datetime, default value: datetime.now().
  • end: Default end datetime, type: int, default value: datetime.now().
  • refresh_buttons: Mutil Refresh button configuration, type: [{'button_name': str, 'refresh_value': datetime}], default values: []. When the button is clicked, it refreshes the selected time range.
  • available_dates: Available dates, type: List[datetime], default value: None, can select all dates.
  • The return value of datetime_range_picker is of type str.

Date Picker

  • picker_type: Default picker type, type: str, options: time, date, week, month, quarter, year.
  • value: Default value, type: datetime, default value: datetime.now().
  • available_dates: Available dates, type: List[datetime], default value: None, can select all dates.
  • key: Picker key, default value: None.

License

This project is licensed under the MIT License. See the LICENSE file for more details.

Metadata

Release files for streamlit-date-picker 0.0.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for streamlit-date-picker 0.0.5
File Size Uploaded
streamlit_date_picker-0.0.5.tar.gz 939.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for streamlit-date-picker 0.0.5
File Interpreter ABI Platform
streamlit_date_picker-0.0.5-py3-none-any.whl Python 3 none any Details

Total release size: 3.8 MB

Release files / streamlit_date_picker-0.0.5.tar.gz

Download URL streamlit_date_picker-0.0.5.tar.gz
Size 939.5 kB
Tags Source
SHA-256 checksum
How to use checksums
6aa12d3ca319c3fb9a144d70134d2980ab9fe28411daa6766365f0ea081aa284
BLAKE2b-256 checksum
How to use checksums
994a4b31704f0854077ed5d16720f14819bd5cddcbeb3a6858d4a6e76ae08754
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.8.19

Release files / streamlit_date_picker-0.0.5-py3-none-any.whl

Download URL streamlit_date_picker-0.0.5-py3-none-any.whl
Size 2.8 MB
Tags Python 3
SHA-256 checksum
How to use checksums
34df7a6e55773079480a46b929ddd5e3cca47590395f265145afafcca4063999
BLAKE2b-256 checksum
How to use checksums
ed6101299712d3537e18d4452e8598115390826089e7000faf7cc5b20212aa81
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.8.19
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page