User Tools

Site Tools


manipulating_dates_in_python

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
manipulating_dates_in_python [2021/08/14 13:17] – created rajumanipulating_dates_in_python [2024/02/06 05:22] (current) raju
Line 1: Line 1:
 +===== Tasks =====
 +  * [[Add dates]]
 +    * uses | strptime
 +  * [[Convert string to date]]
 +
 +===== Dummy =====
 +
 +==== date in isoformat ====
 +
 +<code>
 +from datetime import date
 +today = date.today().isoformat()
 +print(type(today))
 +print(today)
 +
 +<class 'str'>
 +2023-09-18
 +</code>
 +
 +It also works on datetime objects and will give the time in ISO 8601 format.
 +<code>
 +from datetime import datetime
 +now = datetime.today().isoformat()
 +print(type(now))
 +print(now)
 +
 +<class 'str'>
 +2023-09-18T13:55:17.214513
 +</code>
 +
 +Ref:- https://stackoverflow.com/questions/32490629/getting-todays-date-in-yyyy-mm-dd-in-python
 +
 +==== extract date from datetime ====
 +<code>
 +$ 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
 +</code>
 +
 ==== get today's day, month and year ==== ==== get today's day, month and year ====
 <code> <code>
Line 23: Line 85:
 [2021, 8, 14] [2021, 8, 14]
 </code> </code>
 +
 +==== iterate over a range of dates ====
 +To iterate on all days including weekends
 +<code>
 +for dt in pd.date_range('20160226', '20160303'):
 +  print(dt.strftime('%Y%m%d'))
 +
 +20160226
 +20160227
 +20160228
 +20160229
 +20160301
 +20160302
 +20160303
 +</code>
 +
 +To iterate only on weekdays
 +<code>
 +for dt in pd.date_range('20160226', '20160303'):
 +  if (dt.weekday() < 5):
 +    print(dt.strftime('%Y%m%d'))
 +
 +20160226
 +20160229
 +20160301
 +20160302
 +20160303
 +</code>
 +
 +To iterate in reverse chronological order
 +<code>
 +for dt in pd.date_range('20160226', '20160303')[::-1]:
 +  if (dt.weekday() < 5):
 +    print(dt.strftime('%Y%m%d'))
 +
 +20160303
 +20160302
 +20160301
 +20160229
 +20160226
 +</code>
 +
 +To experiment with just one date element
 +<code>
 +>>> a = pd.date_range('20160226', '20160303')
 +>>> a[0].strftime('%Y%m%d')
 +'20160226'
 +</code>
 +
 +To create a pandas.tslib.Timestamp variable
 +<code>
 +>>> 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)))
 +<class 'pandas.tslib.Timestamp'>
 +
 +>>> for dt in pd.date_range('20160929', '20160930')[::-1]:
 +...     type(dt)
 +...
 +<class 'pandas.tslib.Timestamp'>
 +<class 'pandas.tslib.Timestamp'>
 +</code>
 +
 +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 ====
 +<code>
 +$ 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
 +</code>
 +
manipulating_dates_in_python.1628947030.txt.gz · Last modified: 2021/08/14 13:17 by raju