Maybe these examples will help you get an idea:
from dateutil.relativedelta import relativedelta
import datetime
date1 = datetime.datetime.strptime("2015-01-30", "%Y-%m-%d").strftime("%d-%m-%Y")
print(date1)
today = datetime.date.today()
print(today)
addMonths = relativedelta(months=3)
future = today + addMonths
print(future)
If you import datetime it will give you more options in managing date and time variables.
In my example above I have some example code that will show you how it works.
It is also very usefull if you would for example would like to add a x number of days, months or years to a certain date.
Edit: To answer you question below this post I would suggest you to look at "calendar"
For example:
import calendar
january2012 = calendar.monthrange(2002,1)
print(january2012)
february2008 = calendar.monthrange(2008,2)
print(february2008)
This return you the first workday of the month, and the number of days of the month.
With that you can calculate what was the last workday of the month.
Here is more information about it: Link
Also have a loook here, looks what you might could use: Link
Maybe these examples will help you get an idea:
from dateutil.relativedelta import relativedelta
import datetime
date1 = datetime.datetime.strptime("2015-01-30", "%Y-%m-%d").strftime("%d-%m-%Y")
print(date1)
today = datetime.date.today()
print(today)
addMonths = relativedelta(months=3)
future = today + addMonths
print(future)
If you import datetime it will give you more options in managing date and time variables.
In my example above I have some example code that will show you how it works.
It is also very usefull if you would for example would like to add a x number of days, months or years to a certain date.
Edit: To answer you question below this post I would suggest you to look at "calendar"
For example:
import calendar
january2012 = calendar.monthrange(2002,1)
print(january2012)
february2008 = calendar.monthrange(2008,2)
print(february2008)
This return you the first workday of the month, and the number of days of the month.
With that you can calculate what was the last workday of the month.
Here is more information about it: Link
Also have a loook here, looks what you might could use: Link
converting string 'yyyy-mm-dd' into datetime/date python
from datetime import date
date_string = '2015-01-30'
now = date(*map(int, date_string.split('-')))
# or now = datetime.strptime(date_string, '%Y-%m-%d').date()
the last business day of the next month
from datetime import timedelta
DAY = timedelta(1)
last_bday = (now.replace(day=1) + 2*31*DAY).replace(day=1) - DAY
while last_bday.weekday() > 4: # Sat, Sun
last_bday -= DAY
print(last_bday)
# -> 2015-02-27
It doesn't take into account holidays.
python - Converting date between DD/MM/YYYY and YYYY-MM-DD? - Stack Overflow
pandas - Python how to convert datetime.date to the YYYY-MM-DD? - Stack Overflow
How can I convert YYYY-MM-DD to M/D/YYYY
python - Convert a date string into YYYYMMDD - Stack Overflow
Are there third-party libraries for more advanced datetime operations in Python?
What are the common mistakes when working with datetime objects in Python?
Are there any limitations to handling extremely distant past or future dates with Python datetime objects?
Videos
Your example code is wrong. This works:
import datetime
datetime.datetime.strptime("21/12/2008", "%d/%m/%Y").strftime("%Y-%m-%d")
The call to strptime() parses the first argument according to the format specified in the second, so those two need to match. Then you can call strftime() to format the result into the desired final format.
you first would need to convert string into datetime tuple, and then convert that datetime tuple to string, it would go like this:
lastconnection = datetime.strptime("21/12/2008", "%d/%m/%Y").strftime('%Y-%m-%d')
Just put that into the str(...) function:
import datetime
my_date = datetime.date(2022, 6, 7)
print(str(my_date)) # prints 2022-06-07
Technically, you can just print it and not make it a string first. But putting it in str means that instead of printing it, you could save that string to a variable.
If you need more advanced formatting options, then you can do what @FObersteiner suggested. But the format you want happens to be the default, so this will do if you just want that one format
Try this:
# import datetime module
from datetime import datetime
# consider date in string format
my_date = "30-May-2020-15:59:02"
# convert datetime string into date,month,day and
# hours:minutes:and seconds format using strptime
d = datetime.strptime(my_date, "%d-%b-%Y-%H:%M:%S")
# convert datetime format into %Y-%m-%d-%H:%M:%S
# format using strftime
print(d.strftime("%Y-%m-%d-%H:%M:%S"))
Hello all,
I have an excel file with about 100 columns, and 30 or so are dates, I would like to convert all the date formats
from:
YYYY-MM-DD
to
M/D/YYYY
I was able to change it to MM/DD/YYYY using the following code
def fmt(input_dt):
if isnull(input_dt):
return ""
else:
return input_dt.strftime("%m/%d/%Y")
for col in df.columns:
if df[col].dtype == 'datetime64[ns]':
df[col] = df[col].apply(fmt)but that gives me
MM/DD/YYYY
I also need it to be datetime when exported back to excel.
I looked into the documentation
https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes
But it does not have M/D/YYYY any suggestions would be helpful. Thank you! Also if there is a more pythonic way to write it please let me know
Try dateutil:
from dateutil import parser
dates = ['30th November 2009', '31st March 2010', '30th September 2010']
for date in dates:
print parser.parse(date).strftime('%Y%m%d')
output:
20091130
20100331
20100930
or if you want to do it using standard datetime module:
from datetime import datetime
dates = ['30th November 2009', '31st March 2010', '30th September 2010']
for date in dates:
part = date.split()
print datetime.strptime('%s %s %s' % (part[0][:-2]), part[1], part[2]), '%d %B %Y').strftime('%Y%m%d')
You can almost do this with a combination of strptime and strptime from the datetime module.
The problem we have is that the built-in formats support dates like 30 November 2010 but not 30th November 2010. So in the example below I've used a regular expression substitution to strip out the problem characters. (The regular expression uses a look-behind to see if "st", "nd", "rd" or "th" is preceeded by a digit, and if so replaces it with the empty string, thus removing it from the string.)
>>> import re
>>> from datetime import datetime
>>> mydate = "30th November 2009"
>>> mydate = re.sub("(?<=\d)(st|nd|rd|th)","",mydate)
>>> mydate
'30 November 2009'
>>> mydatetime = datetime.strptime(mydate,"%d %B %Y")
>>> mydatetime
datetime.datetime(2009, 11, 30, 0, 0)
>>> mydatetime.strftime("%Y%M%d")
'20090030'