pass time unit as a variable to the keyword argument in time delta function.

  • Last Update :
  • Techknowledgy :

You can use a dictionary and apply it as a mapping argument:

timedelta( ** {
   time_unit: num
})

Demo:

>>> from datetime
import datetime, timedelta, date
   >>>
   def subtract_from_date(date, time_unit, num):
   ...
   return date - timedelta( ** {
         time_unit: num
      })
      ...
      >>>
      subtract_from_date(date.today(), 'days', 5)
datetime.date(2015, 3, 21)

Suggestion : 2

Time deltas¶. Timedeltas are differences in times, expressed in difference units, e.g. days, hours, minutes, seconds. They can be both positive and negative. , 5 days ago Time deltas. ¶. Timedeltas are differences in times, expressed in difference units, e.g. days, hours, minutes, seconds. They can be both positive and negative. Timedelta is a subclass of datetime.timedelta, and behaves in a similar manner, but allows compatibility with np.timedelta64 types as well as a host of custom representation, parsing ... , Python | datetime.timedelta() function. Python timedelta() function is present under datetime library which is generally used for calculating differences in dates and also can be used for date manipulations in Python. It is one of the easiest ways to perform date manipulations. , Time deltas. ¶. Timedeltas are differences in times, expressed in difference units, e.g. days, hours, minutes, seconds. They can be both positive and negative. Timedelta is a subclass of datetime.timedelta, and behaves in a similar manner, but allows compatibility with np.timedelta64 types as well as a host of custom representation, parsing, ...


def subtract_from_date(date, time_unit, num): return date - timedelta(time_unit = num)

timedelta( ** {
   time_unit: num
})

Suggestion : 3

The unit keyword argument specifies the unit of the Timedelta if the input is numeric:,Timedeltas are differences in times, expressed in difference units, e.g. days, hours, minutes, seconds. They can be both positive and negative.,You can use the .components property to access a reduced form of the timedelta. This returns a DataFrame indexed similarly to the Series. These are the displayed values of the Timedelta.,If a string or array of strings is passed as an input then the unit keyword argument will be ignored. If a string without units is passed then the default unit of nanoseconds is assumed.

In[1]: import datetime

# strings
In[2]: pd.Timedelta("1 days")
Out[2]: Timedelta('1 days 00:00:00')

In[3]: pd.Timedelta("1 days 00:00:00")
Out[3]: Timedelta('1 days 00:00:00')

In[4]: pd.Timedelta("1 days 2 hours")
Out[4]: Timedelta('1 days 02:00:00')

In[5]: pd.Timedelta("-1 days 2 min 3us")
Out[5]: Timedelta('-2 days +23:57:59.999997')

# like datetime.timedelta
# note: these MUST be specified as keyword arguments
In[6]: pd.Timedelta(days = 1, seconds = 1)
Out[6]: Timedelta('1 days 00:00:01')

# integers with a unit
In[7]: pd.Timedelta(1, unit = "d")
Out[7]: Timedelta('1 days 00:00:00')

# from a datetime.timedelta / np.timedelta64
In[8]: pd.Timedelta(datetime.timedelta(days = 1, seconds = 1))
Out[8]: Timedelta('1 days 00:00:01')

In[9]: pd.Timedelta(np.timedelta64(1, "ms"))
Out[9]: Timedelta('0 days 00:00:00.001000')

# negative Timedeltas have this string repr
# to be more consistent with datetime.timedelta conventions
In[10]: pd.Timedelta("-1us")
Out[10]: Timedelta('-1 days +23:59:59.999999')

# a NaT
In[11]: pd.Timedelta("nan")
Out[11]: NaT

In[12]: pd.Timedelta("nat")
Out[12]: NaT

# ISO 8601 Duration strings
In[13]: pd.Timedelta("P0DT0H1M0S")
Out[13]: Timedelta('0 days 00:01:00')

In[14]: pd.Timedelta("P0DT0H0M0.000000123S")
Out[14]: Timedelta('0 days 00:00:00.000000123')
In[15]: pd.Timedelta(pd.offsets.Second(2))
Out[15]: Timedelta('0 days 00:00:02')
In[16]: pd.Timedelta(pd.offsets.Day(2)) + pd.Timedelta(pd.offsets.Second(2)) + pd.Timedelta(
      ....: "00:00:00.000123"
      ....: )
   ....:
   Out[16]: Timedelta('2 days 00:00:02.000123')
In[17]: pd.to_timedelta("1 days 06:05:01.00003")
Out[17]: Timedelta('1 days 06:05:01.000030')

In[18]: pd.to_timedelta("15.5us")
Out[18]: Timedelta('0 days 00:00:00.000015500')
In[19]: pd.to_timedelta(["1 days 06:05:01.00003", "15.5us", "nan"])
Out[19]: TimedeltaIndex(['1 days 06:05:01.000030', '0 days 00:00:00.000015500', NaT], dtype = 'timedelta64[ns]', freq = None)
In[20]: pd.to_timedelta(np.arange(5), unit = "s")
Out[20]:
   TimedeltaIndex(['0 days 00:00:00', '0 days 00:00:01', '0 days 00:00:02',
         '0 days 00:00:03', '0 days 00:00:04'
      ],
      dtype = 'timedelta64[ns]', freq = None)

In[21]: pd.to_timedelta(np.arange(5), unit = "d")
Out[21]: TimedeltaIndex(['0 days', '1 days', '2 days', '3 days', '4 days'], dtype = 'timedelta64[ns]', freq = None)

Suggestion : 4

A timedelta object represents a duration, the difference between two dates or times.,A duration expressing the difference between two date, time, or datetime instances to microsecond resolution.,The smallest possible difference between non-equal timedelta objects, timedelta(microseconds=1).,The smallest possible difference between non-equal datetime objects, timedelta(microseconds=1).

object
timedelta
tzinfo
timezone
time
date
datetime
>>> from datetime
import timedelta
   >>>
   delta = timedelta(
      ...days = 50,
      ...seconds = 27,
      ...microseconds = 10,
      ...milliseconds = 29000,
      ...minutes = 5,
      ...hours = 8,
      ...weeks = 2
      ...) >>>
   # Only days, seconds, and microseconds remain >>>
   delta
datetime.timedelta(days = 64, seconds = 29156, microseconds = 10)
>>> from datetime
import timedelta
   >>>
   d = timedelta(microseconds = -1) >>>
   (d.days, d.seconds, d.microseconds)
   (-1, 86399, 999999)
>>> timedelta(hours = -5)
datetime.timedelta(days = -1, seconds = 68400) >>>
   print(_) -
   1 day, 19: 00: 00
>>> from datetime
import timedelta
   >>>
   delta1 = timedelta(seconds = 57) >>>
   delta2 = timedelta(hours = 25, seconds = 2) >>>
   delta2 != delta1
True
   >>>
   delta2 == 5
False
>>> delta2 > delta1
True
>>> delta2 > 5
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
      TypeError: '>' not supported between instances of 'datetime.timedelta' and 'int'

Suggestion : 5

You're getting that error because 'duration' isn't a valid keyword argument for timedelta,So when you try to pass in duration as a keyword argument it's interpreting that literally as an argument named duration which isn't in that list.,why do I get TypeError: 'duration' is an invalid keyword argument for this function for this code,duration is a argument that is passed into your time_machine function which holds a string of whatever the time unit was. The valid choices for keyword arguments are : 'days, seconds, microseconds, milliseconds, minutes, hours or weeks'

import datetime

starter = datetime.datetime(2015, 10, 21, 16, 29)

def time_machine(int, duration):
   if duration == "years":
   int = int * 365
duration = "days"
return datetime.timedelta(duration = int)

print(time_machine(5, "minutes"))
# suppose duration was "days"
and int was 5
datetime.timedelta( ** {
   duration: int
}) # becomes datetime.timedelta(days = 5)

Suggestion : 6

Last Updated On October 11, 2021 By Maryam Anwar

datetime.timedelta(days = 0, seconds = 0, microseconds = 0, milliseconds = 0, minutes = 0, hours = 0, weeks = 0)
from datetime
import datetime, timedelta

current_date = datetime.now()

date_after_one_year = current_date + timedelta(days = 365)

print('Current Date:', current_date)
print('After One Year Date from Now:', date_after_one_year)

date_before_five_days = current_date - timedelta(days = 5)
print('Date before Five Days from Now:', date_before_five_days)
from datetime
import datetime, timedelta

current_date = datetime.now()

print('Current Date:', current_date)

next_date = current_date + \
   timedelta(days = 4)

print("Next Day:", next_date)

print('The Time Difference in Two Days:', next_date - \
      current_dat

Suggestion : 7

For more information about temporal interval syntax, including a full list of unit specifiers, the expected form of the expr argument for each unit value, and rules for operand interpretation in temporal arithmetic, see Temporal Intervals. , These functions perform date arithmetic. The date argument specifies the starting date or datetime value. expr is an expression specifying the interval value to be added or subtracted from the starting date. expr is evaluated as a string; it may start with a - for negative intervals. unit is a keyword indicating the units in which the expression should be interpreted. , Returns the current time as a value in 'hh:mm:ss' or hhmmss format, depending on whether the function is used in string or numeric context. The value is expressed in the session time zone. , The second form enables the use of an integer value for days. In such cases, it is interpreted as the number of days to be subtracted from the date or datetime expression expr.

When invoked with the INTERVAL form of the second argument, ADDDATE() is a synonym for DATE_ADD(). The related function SUBDATE() is a synonym for DATE_SUB(). For information on the INTERVAL unit argument, see Temporal Intervals.

mysql > SELECT DATE_ADD('2008-01-02', INTERVAL 31 DAY); -
> '2008-02-02'
mysql > SELECT ADDDATE('2008-01-02', INTERVAL 31 DAY); -
> '2008-02-02'

When invoked with the days form of the second argument, MySQL treats it as an integer number of days to be added to expr.

mysql > SELECT ADDDATE('2008-01-02', 31); -
> '2008-02-02'
mysql > SELECT ADDTIME('2007-12-31 23:59:59.999999', '1 1:1:1.000002'); -
> '2008-01-02 01:01:01.000001'
mysql > SELECT ADDTIME('01:00:00.999999', '02:00:00.999998'); -
> '03:00:01.999997'

Regardless of platform or MySQL version, if the value falls out of the supported range when converted from from_tz to UTC, no conversion occurs.

mysql > SELECT CONVERT_TZ('2004-01-01 12:00:00', 'GMT', 'MET'); -
> '2004-01-01 13:00:00'
mysql > SELECT CONVERT_TZ('2004-01-01 12:00:00', '+00:00', '+10:00'); -
> '2004-01-01 22:00:00'

Returns the current date as a value in 'YYYY-MM-DD' or YYYYMMDD format, depending on whether the function is used in string or numeric context.

mysql > SELECT CURDATE(); -
> '2008-06-13'
mysql > SELECT CURDATE() + 0; -
> 20080613

If the fsp argument is given to specify a fractional seconds precision from 0 to 6, the return value includes a fractional seconds part of that many digits.

mysql > SELECT CURTIME(); +
-- -- -- -- -- - +
|
CURTIME() |
   + -- -- -- -- -- - +
   |
   19: 25: 37 |
   + -- -- -- -- -- - +

   mysql > SELECT CURTIME() + 0; +
-- -- -- -- -- -- -- - +
|
CURTIME() + 0 |
   + -- -- -- -- -- -- -- - +
   |
   192537 |
   + -- -- -- -- -- -- -- - +

   mysql > SELECT CURTIME(3); +
-- -- -- -- -- -- -- +
|
CURTIME(3) |
   + -- -- -- -- -- -- -- +
   |
   19: 25: 37.840 |
   + -- -- -- -- -- -- -- +

Extracts the date part of the date or datetime expression expr. Returns NULL if expr is NULL.

mysql > SELECT DATE('2003-12-31 01:02:03'); -
> '2003-12-31'