Python – Dates and Times
Working with time in Python The module for handling time is called "datetime" it contains four classes: date - year, month, and day time - hour, minute, second, microsecond, and timezone datetime - holds both date and time (see above) timedelta - holds a 'difference' in time between two of the above Details here: https://docs.python.org/3.4/library/datetime.html
datetime.date Two ways to construct: date(year, month, day) date.today() You can get the data out through attributes: date.year, date.month, date.day d = datetime.date(2000, 12, 15) d.year # 2000
datetime.time One constructor: time(hour, minute, second, microsecond) all are assumed 0 unless specified You can get the data out through attributes: time.hour, time.minute, time.second, time.microsecond t = datetime.time(14, 11, 56) t.minute # 11
datetime.datetime Two constructors: datetime(year, month, day, hour, minute, second, microsecond) datetime.now() gets the current date and time You can get the data out through attributes: Combined attributes of date and time dt = datetime.datetime.now() dt.day # 8 dt.hour # 1
datetime.timedelta One constructor: timedelta(days, hours, minutes, seconds, ...) Defaults to zero if arguments aren't supplied delta = datetime.timedelta(days=2) # Represents 2 days duration You can use it to calculate datetimes: datetime.datetime.now() + delta # yields a date 2 days from now
import datetime now = datetime. datetime. now() birth = datetime import datetime now = datetime.datetime.now() birth = datetime.datetime(1988, 11, 1, 9) #Nov 1st, 1988 9AM my_age = now - birth # age is a timedelta legal_drinking_age = datetime.timedelta(days = (21 * 365)) is_legal_to_drink = my_age > legal_drinking_age # Doesn't take leap days/seconds into account
Converting Python datetime to ISO 8601 All the datetime classes have a "strftime" method This method will output a string formatted according to a pattern dt = datetime.datetime(2015, 3, 4, 12, 35) dt.strftime("%Y-%m-%d %H:%M:%S") # yields '2015-03-04 12:35:00' You can use the datetime class method, "strptime", to convert a string to a datetime object. The method takes a date_string and a format, and it returns a datatime object dt2 = datetime.datetime.strptime('2015-03-04 12:35:00', "%Y-%m-%d %H:%M:%S") assert dt == dt2
Combining Python and SQLite datetimes SQL databases can't hold Python objects, so you must convert them to ISO 8601 and store the resulting TEXT. You can use the 'strftime' method to do this On retrieving a date encoded as TEXT you can convert the string back to a Python datetime class. You can use the 'strptime' method to do this Note, using SQL date/time functions may alter the format (i.e. add microsecond precision or timezone info) so you should refrain from using them.