You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

пре 11 година
пре 13 година
пре 12 година
пре 13 година
пре 13 година
пре 13 година
пре 13 година
пре 13 година
пре 13 година
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. # Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
  2. # MIT License. See license.txt
  3. from __future__ import unicode_literals
  4. import webnotes
  5. import webnotes.defaults
  6. import datetime
  7. from webnotes.utils import get_datetime
  8. # global values -- used for caching
  9. dateformats = {
  10. 'yyyy-mm-dd': '%Y-%m-%d',
  11. 'mm/dd/yyyy': '%m/%d/%Y',
  12. 'mm-dd-yyyy': '%m-%d-%Y',
  13. "mm/dd/yy": "%m/%d/%y",
  14. 'dd-mmm-yyyy': '%d-%b-%Y', # numbers app format
  15. 'dd/mm/yyyy': '%d/%m/%Y',
  16. 'dd-mm-yyyy': '%d-%m-%Y',
  17. "dd/mm/yy": "%d/%m/%y",
  18. }
  19. def user_to_str(date, date_format=None):
  20. if not date: return date
  21. if not date_format:
  22. date_format = get_user_date_format()
  23. try:
  24. return datetime.datetime.strptime(date,
  25. dateformats[date_format]).strftime('%Y-%m-%d')
  26. except ValueError, e:
  27. raise ValueError, "Date %s must be in format %s" % (date, date_format)
  28. def parse_date(date):
  29. """tries to parse given date to system's format i.e. yyyy-mm-dd. returns a string"""
  30. parsed_date = None
  31. # why the sorting? checking should be done in a predictable order
  32. check_formats = [None] + sorted(dateformats.keys(),
  33. reverse=not get_user_date_format().startswith("dd"))
  34. for f in check_formats:
  35. try:
  36. parsed_date = user_to_str(date, f)
  37. if parsed_date:
  38. break
  39. except ValueError, e:
  40. pass
  41. if not parsed_date:
  42. raise Exception, """Cannot understand date - '%s'.
  43. Try formatting it like your default format - '%s'""" % \
  44. (date, get_user_date_format())
  45. return parsed_date
  46. def get_user_date_format():
  47. if getattr(webnotes.local, "user_date_format", None) is None:
  48. webnotes.local.user_date_format = webnotes.defaults.get_global_default("date_format")
  49. return webnotes.local.user_date_format
  50. def datetime_in_user_format(date_time):
  51. if not date_time:
  52. return ""
  53. if isinstance(date_time, basestring):
  54. date_time = get_datetime(date_time)
  55. from webnotes.utils import formatdate
  56. return formatdate(date_time.date()) + " " + date_time.strftime("%H:%M")