Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

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