= Date/Time Conversion = [[attachment:dateutils.py|Download DateUtils]] This utility class will convert different date time formats into the proper format to create a Python {{{datetime}}} object. It will use the current locale to determine differences that can not be determined in any other way such as 05/12/2010 meaning either dd/mm/yyyy or mm/dd/yyyy. '''Methods''' 1. DateUtils.toDatetime(value, format=None) 1. DateUtils.getFormatTypes() 1. DateUtils.isValidDate(dObj) 1. DateUtils.isValidTime(tObj) 1. DateUtils.isValidDateTime(dtObj) The methods are all classmethods. A string value is passed into the {{{DateUtils.toDatetime()}}} method. If you know the format of your date or only want to allow a specific format that format can be passed into the {{{format}}} keyword argument. == Implemented Formats == 1. yyyy-mm-dd hh:mm:ss (with or without milliseconds) 1. mm-dd-yyyy hh:mm:ss (with or without milliseconds) 1. dd-mm-yyyy hh:mm:ss (with or without milliseconds) 1. yyyymmddHHMMSS (with or without milliseconds) 1. wkday, dd month yyyy hh:mm:ss GMT 1. weekday, dd-month-yy hh:mm:ss GMT 1. wkday month dd hh:mm:ss yyyy The last three are RFC-2616 valid formats that can be used in HTTP headers such as {{{Last-Modified}}} or {{{If-Modified-Since}}}. The datetime object generated can be used to compare for conditional GETs. The datetime objects that are generated for the RFC-2616 formats are timezone naive since all headers are in GMT (UTC) time and can be compared as is. Conversions to and from different timezones should be done beforehand with a tool like [[http://pytz.sourceforge.net/|pytz]]. === Examples === - Date but no time {{{ from dateutils import DateUtils DateUtils.toDatetime('2010/04/05') Out[2]: datetime.datetime(2010, 4, 5, 0, 0) }}} - Date and Time {{{ from dateutils import DateUtils DateUtils.toDatetime('2010/04/05 23:20:59') Out[3]: datetime.datetime(2010, 4, 5, 23, 20, 59) }}} - Date, Time and the format is specified. {{{ from dateutils import DateUtils DateUtils.toDatetime('20100405232059', format="yyyymmddHHMMSS") Out[6]: datetime.datetime(2010, 4, 5, 23, 20, 59) }}} == Exceptions == 1. A {{{ValueError}}} will be raised if the value does not match the format or if the format can not be determined. 1. A {{{KeyError}}} will be raised if the the date time format is not supported.