Date range selection from input with custom dates and quarter, monthly, yearly etc

I have an application and it has a date input, for user friendly input i want it to have multiple options in the date input, i.e today, yesterday, custom range, last week . last month, last year, last quarter etc.
Refer the image, How can i achieve the same in streamlit?

It not as nice as your example, but here a begining of hint i would do :

        from datetime import datetime, timedelta

        # Function to get the date range for "Last Week", "Last Month", etc.
        def get_date_range(option):
            today = datetime.today()
            if option == "Today":
                start_date = today
                end_date = today
            elif option == "Yesterday":
                start_date = today - timedelta(days=1)
                end_date = today - timedelta(days=1)
            elif option == "Last Week":
                start_date = today - timedelta(weeks=1)
                end_date = today - timedelta(days=1)
            elif option == "Last Month":
                start_date = today.replace(day=1) - timedelta(days=1)
                start_date = start_date.replace(day=1)
                end_date = today.replace(day=1) - timedelta(days=1)
            elif option == "Last Year":
                start_date = today.replace(year=today.year - 1, month=1, day=1)
                end_date = today.replace(year=today.year - 1, month=12, day=31)
            elif option == "Last Quarter":
                if today.month <= 3:
                    start_date = today.replace(year=today.year - 1, month=10, day=1)
                    end_date = today.replace(year=today.year - 1, month=12, day=31)
                elif today.month <= 6:
                    start_date = today.replace(month=1, day=1)
                    end_date = today.replace(month=3, day=31)
                elif today.month <= 9:
                    start_date = today.replace(month=4, day=1)
                    end_date = today.replace(month=6, day=30)
                else:
                    start_date = today.replace(month=7, day=1)
                    end_date = today.replace(month=9, day=30)
            else:
                start_date, end_date = None, None

            return start_date, end_date

        # Streamlit selectbox for date range options
        option = st.selectbox("Choose a Date Range",
                              ["Today", "Yesterday", "Last Week", "Last Month", "Last Year", "Last Quarter",
                               "Custom Range"])

        # Get the start and end date based on the selected option
        start_date, end_date = get_date_range(option)


        start_date = st.date_input("Start date",value=(start_date, end_date))

Thank you, but this wont give me the custom and some other details anyways it would help me build the one.
Thanks again.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.