/django/contrib/admin/media/js/timeparse.js

https://code.google.com/p/mango-py/ · JavaScript · 94 lines · 86 code · 1 blank · 7 comment · 24 complexity · a298a7ede5c334038c8c46d9b0a1b008 MD5 · raw file

  1. var timeParsePatterns = [
  2. // 9
  3. { re: /^\d{1,2}$/i,
  4. handler: function(bits) {
  5. if (bits[0].length == 1) {
  6. return '0' + bits[0] + ':00';
  7. } else {
  8. return bits[0] + ':00';
  9. }
  10. }
  11. },
  12. // 13:00
  13. { re: /^\d{2}[:.]\d{2}$/i,
  14. handler: function(bits) {
  15. return bits[0].replace('.', ':');
  16. }
  17. },
  18. // 9:00
  19. { re: /^\d[:.]\d{2}$/i,
  20. handler: function(bits) {
  21. return '0' + bits[0].replace('.', ':');
  22. }
  23. },
  24. // 3 am / 3 a.m. / 3am
  25. { re: /^(\d+)\s*([ap])(?:.?m.?)?$/i,
  26. handler: function(bits) {
  27. var hour = parseInt(bits[1]);
  28. if (hour == 12) {
  29. hour = 0;
  30. }
  31. if (bits[2].toLowerCase() == 'p') {
  32. if (hour == 12) {
  33. hour = 0;
  34. }
  35. return (hour + 12) + ':00';
  36. } else {
  37. if (hour < 10) {
  38. return '0' + hour + ':00';
  39. } else {
  40. return hour + ':00';
  41. }
  42. }
  43. }
  44. },
  45. // 3.30 am / 3:15 a.m. / 3.00am
  46. { re: /^(\d+)[.:](\d{2})\s*([ap]).?m.?$/i,
  47. handler: function(bits) {
  48. var hour = parseInt(bits[1]);
  49. var mins = parseInt(bits[2]);
  50. if (mins < 10) {
  51. mins = '0' + mins;
  52. }
  53. if (hour == 12) {
  54. hour = 0;
  55. }
  56. if (bits[3].toLowerCase() == 'p') {
  57. if (hour == 12) {
  58. hour = 0;
  59. }
  60. return (hour + 12) + ':' + mins;
  61. } else {
  62. if (hour < 10) {
  63. return '0' + hour + ':' + mins;
  64. } else {
  65. return hour + ':' + mins;
  66. }
  67. }
  68. }
  69. },
  70. // noon
  71. { re: /^no/i,
  72. handler: function(bits) {
  73. return '12:00';
  74. }
  75. },
  76. // midnight
  77. { re: /^mid/i,
  78. handler: function(bits) {
  79. return '00:00';
  80. }
  81. }
  82. ];
  83. function parseTimeString(s) {
  84. for (var i = 0; i < timeParsePatterns.length; i++) {
  85. var re = timeParsePatterns[i].re;
  86. var handler = timeParsePatterns[i].handler;
  87. var bits = re.exec(s);
  88. if (bits) {
  89. return handler(bits);
  90. }
  91. }
  92. return s;
  93. }