Login

Encoding datetime for JSON consumers like YUI

Author:
acdha
Posted:
December 22, 2009
Language:
Python
Version:
1.1
Score:
1 (after 1 ratings)

Passing datetimes from Python to a YUI DataTable via JSON served by django-piston turned out to be surprisingly rocky. This code actually works with YAHOO.lang.JSON.stringToDate (not YAHOO.util.DataSource.parseDate) which cannot handle time zone specifiers other than "Z" or dates without timezones.

The YUI DataSource which uses this looks something like this - note that simply setting format:"date" does not work as that uses YAHOO.util.DataSource.parseDate, which usesDate.parse to do the actual conversion, which will involve browser-specific formats and as of this writing only Chrome's native Date can reliably parse ISO 8601 dates.

myDataSource.responseSchema = {
    resultsList: '…',
    fields: [
        …
        {
            key: 'my_date_field', 
            parser: YAHOO.lang.JSON.stringToDate
        },
    ],
    …
};
1
2
3
4
# Unlike datetime.isoformat(), this works in UTC and has the trailing Z which is
# required by JSON parsers such as YAHOO.lang.JSON.stringToDate:

time.strftime('%Y-%m-%dT%H:%M:%SZ', date.utctimetuple())

More like this

  1. Month / Year SelectDateWidget based on django SelectDateWidget by pierreben 2 weeks, 6 days ago
  2. Python Django CRUD Example Tutorial by tuts_station 1 month ago
  3. Browser-native date input field by kytta 2 months, 2 weeks ago
  4. Generate and render HTML Table by LLyaudet 2 months, 4 weeks ago
  5. My firs Snippets by GutemaG 3 months ago

Comments

Please login first before commenting.