===== Tasks ===== * [[Add dates]] * uses | strptime * [[Convert string to date]] ===== Dummy ===== ==== date in isoformat ==== from datetime import date today = date.today().isoformat() print(type(today)) print(today) 2023-09-18 It also works on datetime objects and will give the time in ISO 8601 format. from datetime import datetime now = datetime.today().isoformat() print(type(now)) print(now) 2023-09-18T13:55:17.214513 Ref:- https://stackoverflow.com/questions/32490629/getting-todays-date-in-yyyy-mm-dd-in-python ==== extract date from datetime ==== $ ipython Python 3.10.6 | packaged by conda-forge | (main, Oct 24 2022, 16:02:16) [MSC v.1916 64 bit (AMD64)] Type 'copyright', 'credits' or 'license' for more information IPython 8.4.0 -- An enhanced Interactive Python. Type '?' for help. In [1]: from datetime import datetime s = '24 October 2022' dtt = datetime.strptime(s, "%d %B %Y") print(dtt) 2022-10-24 00:00:00 In [2]: type(dtt) Out[2]: datetime.datetime In [3]: dt = datetime.strptime(s, "%d %B %Y").date() print(dt) 2022-10-24 In [4]: type(dt) Out[4]: datetime.date ==== get today's day, month and year ==== % ipython3 Python 3.9.2 (default, Feb 28 2021, 17:03:44) IPython 7.20.0 -- An enhanced Interactive Python. Type '?' for help. In [1]: import datetime today = datetime.date.today() In [2]: print(today) 2021-08-14 In [3]: type(today) Out[3]: datetime.date In [4]: [today.year, today.month, today.day] Out[4]: [2021, 8, 14] ==== iterate over a range of dates ==== To iterate on all days including weekends for dt in pd.date_range('20160226', '20160303'): print(dt.strftime('%Y%m%d')) 20160226 20160227 20160228 20160229 20160301 20160302 20160303 To iterate only on weekdays for dt in pd.date_range('20160226', '20160303'): if (dt.weekday() < 5): print(dt.strftime('%Y%m%d')) 20160226 20160229 20160301 20160302 20160303 To iterate in reverse chronological order for dt in pd.date_range('20160226', '20160303')[::-1]: if (dt.weekday() < 5): print(dt.strftime('%Y%m%d')) 20160303 20160302 20160301 20160229 20160226 To experiment with just one date element >>> a = pd.date_range('20160226', '20160303') >>> a[0].strftime('%Y%m%d') '20160226' To create a pandas.tslib.Timestamp variable >>> from datetime import datetime >>> for dt in pd.date_range('20160929', '20160930')[::-1]: ... dt == pd.Timestamp(datetime(2016, 9, 29)) ... False True >>> type(pd.Timestamp(datetime(2016, 9, 29))) >>> for dt in pd.date_range('20160929', '20160930')[::-1]: ... type(dt) ... tags | convert output from pandas data_range function to YYYYMMDD, date_range reverse order Ref:- * http://pandas.pydata.org/pandas-docs/stable/timeseries.html#generating-ranges-of-timestamps * http://pandas.pydata.org/pandas-docs/stable/generated/pandas.date_range.html ==== print the names of months in a year ==== $ ipython Python 3.11.4 | packaged by Anaconda, Inc. | (main, Jul 5 2023, 13:47:18) [MSC v.1916 64 bit (AMD64)] IPython 8.12.0 -- An enhanced Interactive Python. Type '?' for help. In [1]: import calendar for m in calendar.month_name: print(m) January February March April May June July August September October November December