diff options
| author | Tom Christie | 2014-11-03 14:36:06 +0000 |
|---|---|---|
| committer | Tom Christie | 2014-11-03 14:36:06 +0000 |
| commit | b106ebd2c0a19107f12d5b87cfbe0083aaaa60b9 (patch) | |
| tree | 736da30fadc813385cc2359caeb30a8ef5d422cb /rest_framework/utils/humanize_datetime.py | |
| parent | 650a91ac24cbd3e5b4ad5d7d7c6706fdf6160a78 (diff) | |
| parent | 8861a7dfc757a88335048aa7bbccfc8a77850c48 (diff) | |
| download | django-rest-framework-b106ebd2c0a19107f12d5b87cfbe0083aaaa60b9.tar.bz2 | |
Merge pull request #1800 from tomchristie/version-3.0
Version 3.0
Diffstat (limited to 'rest_framework/utils/humanize_datetime.py')
| -rw-r--r-- | rest_framework/utils/humanize_datetime.py | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/rest_framework/utils/humanize_datetime.py b/rest_framework/utils/humanize_datetime.py new file mode 100644 index 00000000..649f2abc --- /dev/null +++ b/rest_framework/utils/humanize_datetime.py @@ -0,0 +1,47 @@ +""" +Helper functions that convert strftime formats into more readable representations. +""" +from rest_framework import ISO_8601 + + +def datetime_formats(formats): + format = ', '.join(formats).replace( + ISO_8601, + 'YYYY-MM-DDThh:mm[:ss[.uuuuuu]][+HH:MM|-HH:MM|Z]' + ) + return humanize_strptime(format) + + +def date_formats(formats): + format = ', '.join(formats).replace(ISO_8601, 'YYYY[-MM[-DD]]') + return humanize_strptime(format) + + +def time_formats(formats): + format = ', '.join(formats).replace(ISO_8601, 'hh:mm[:ss[.uuuuuu]]') + return humanize_strptime(format) + + +def humanize_strptime(format_string): + # Note that we're missing some of the locale specific mappings that + # don't really make sense. + mapping = { + "%Y": "YYYY", + "%y": "YY", + "%m": "MM", + "%b": "[Jan-Dec]", + "%B": "[January-December]", + "%d": "DD", + "%H": "hh", + "%I": "hh", # Requires '%p' to differentiate from '%H'. + "%M": "mm", + "%S": "ss", + "%f": "uuuuuu", + "%a": "[Mon-Sun]", + "%A": "[Monday-Sunday]", + "%p": "[AM|PM]", + "%z": "[+HHMM|-HHMM]" + } + for key, val in mapping.items(): + format_string = format_string.replace(key, val) + return format_string |
