Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.

datetime.js 5.8 KiB

13 anni fa
13 anni fa
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. // Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
  2. // MIT License. See license.txt
  3. // Date
  4. function same_day(d1, d2) {
  5. if(d1.getFullYear()==d2.getFullYear() && d1.getMonth()==d2.getMonth() && d1.getDate()==d2.getDate())return true; else return false;
  6. }
  7. var month_list = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
  8. var month_last = {1:31,2:28,3:31,4:30,5:31,6:30,7:31,8:31,9:30,10:31,11:30,12:31}
  9. var month_list_full = ['January','February','March','April','May','June','July','August','September','October','November','December'];
  10. var week_list = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'];
  11. var week_list_full = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];
  12. function int_to_str(i, len) {
  13. i = ''+i;
  14. if(i.length<len)for(c=0;c<(len-i.length);c++)i='0'+i;
  15. return i
  16. }
  17. wn.datetime = {
  18. str_to_obj: function(d) {
  19. if(typeof d=="object") return d;
  20. if(!d) return new Date();
  21. var tm = [0, 0];
  22. if(d.search(' ')!=-1) {
  23. var tm = d.split(' ')[1].split(':');
  24. var d = d.split(' ')[0];
  25. }
  26. if(d.search('-')!=-1) {
  27. var t = d.split('-'); return new Date(t[0],t[1]-1,t[2],tm[0],tm[1]);
  28. } else if(d.search('/')!=-1) {
  29. var t = d.split('/'); return new Date(t[0],t[1]-1,t[2],tm[0],tm[1]);
  30. } else {
  31. return new Date();
  32. }
  33. },
  34. obj_to_str: function(d) {
  35. if(typeof d=='string') return d;
  36. return d.getFullYear() + '-' + int_to_str(d.getMonth()+1,2) + '-' + int_to_str(d.getDate(),2);
  37. },
  38. obj_to_user: function(d) {
  39. return dateutil.str_to_user(dateutil.obj_to_str(d));
  40. },
  41. get_ms_diff: function(d1, d2) {
  42. if(typeof d1=='string') d1 = dateutil.str_to_obj(d1);
  43. if(typeof d2=='string') d2 = dateutil.str_to_obj(d2);
  44. return d1-d2
  45. },
  46. get_diff: function(d1, d2) {
  47. return Math.round(dateutil.get_ms_diff(d1, d2) / 86400000);
  48. },
  49. get_hour_diff: function(d1, d2) {
  50. return Math.round(dateutil.get_ms_diff(d1, d2) / 3600000);
  51. },
  52. get_day_diff: function(d1, d2) {
  53. return dateutil.get_diff(new Date(d1.getYear(), d1.getMonth(), d1.getDate(), 0, 0),
  54. new Date(d2.getYear(), d2.getMonth(), d2.getDate(), 0, 0))
  55. },
  56. add_days: function(d, days) {
  57. var dt = dateutil.str_to_obj(d);
  58. var new_dt = new Date(dt.getTime()+(days*24*60*60*1000));
  59. return dateutil.obj_to_str(new_dt);
  60. },
  61. add_months: function(d, months) {
  62. dt = dateutil.str_to_obj(d)
  63. months = cint(months);
  64. new_dt = new Date(dt.getFullYear(), dt.getMonth()+months, dt.getDate())
  65. if(new_dt.getDate() != dt.getDate()) {
  66. // month has changed, go the last date of prev month
  67. return dateutil.month_end(new Date(dt.getFullYear(), dt.getMonth()+months, 1))
  68. }
  69. return dateutil.obj_to_str(new_dt);
  70. },
  71. month_start: function(d, month) {
  72. if(!d)var d = new Date();
  73. var m = month ? cint(month) : d.getMonth() + 1;
  74. return d.getFullYear() + '-' + int_to_str(m, 2) + '-01';
  75. },
  76. month_end: function(d, month) {
  77. if(!d)var d = new Date();
  78. var m = month ? cint(month) : d.getMonth() + 1;
  79. var y = d.getFullYear();
  80. var last_date = new Date(y, m, 0).getDate();
  81. return y + '-' + int_to_str(m, 2) + '-' + int_to_str(last_date, 2);
  82. },
  83. get_user_fmt: function() {
  84. var t = sys_defaults.date_format;
  85. if(!t) t = 'yyyy-mm-dd';
  86. return t;
  87. },
  88. str_to_user: function(val, no_time_str) {
  89. var user_fmt = dateutil.get_user_fmt();
  90. var time_str = '';
  91. if(val==null||val=='')return null;
  92. // separate time string if there
  93. if(val.search(' ')!=-1) {
  94. var tmp = val.split(' ');
  95. if(tmp[1])
  96. time_str = ' ' + tmp[1];
  97. var d = tmp[0];
  98. } else {
  99. var d = val;
  100. }
  101. if(no_time_str)time_str = '';
  102. // set to user fmt
  103. d = d.split('-');
  104. if(d.length==3) {
  105. if(user_fmt=='dd-mm-yyyy')
  106. val = d[2]+'-'+d[1]+'-'+d[0] + time_str;
  107. else if(user_fmt=='dd/mm/yyyy')
  108. val = d[2]+'/'+d[1]+'/'+d[0] + time_str;
  109. else if(user_fmt=='yyyy-mm-dd')
  110. val = d[0]+'-'+d[1]+'-'+d[2] + time_str;
  111. else if(user_fmt=='mm/dd/yyyy')
  112. val = d[1]+'/'+d[2]+'/'+d[0] + time_str;
  113. else if(user_fmt=='mm-dd-yyyy')
  114. val = d[1]+'-'+d[2]+'-'+d[0] + time_str;
  115. }
  116. return val;
  117. },
  118. full_str: function() {
  119. var d = new Date();
  120. return d.getFullYear() + '-' + (d.getMonth()+1) + '-' + d.getDate() + ' '
  121. + d.getHours() + ':' + d.getMinutes() + ':' + d.getSeconds();
  122. },
  123. user_to_str: function(d, no_time_str) {
  124. var user_fmt = this.get_user_fmt();
  125. var time_str = '';
  126. if (d.search(/ /)!=-1) {
  127. time_str = " " + d.split(" ")[1];
  128. d = d.split(" ")[0];
  129. }
  130. if(user_fmt=='dd-mm-yyyy') {
  131. var d = d.split('-');
  132. var val = d[2]+'-'+d[1]+'-'+d[0];
  133. }
  134. else if(user_fmt=='dd/mm/yyyy') {
  135. var d = d.split('/');
  136. var val = d[2]+'-'+d[1]+'-'+d[0];
  137. }
  138. else if(user_fmt=='yyyy-mm-dd') {
  139. var val = d;
  140. }
  141. else if(user_fmt=='mm/dd/yyyy') {
  142. var d = d.split('/');
  143. var val = d[2]+'-'+d[0]+'-'+d[1];
  144. }
  145. else if(user_fmt=='mm-dd-yyyy') {
  146. var d = d.split('-');
  147. var val = d[2]+'-'+d[0]+'-'+d[1];
  148. }
  149. if(no_time_str)time_str = '';
  150. return val + time_str;
  151. },
  152. user_to_obj: function(d) {
  153. return dateutil.str_to_obj(dateutil.user_to_str(d));
  154. },
  155. global_date_format: function(d) {
  156. if(d.substr) d = this.str_to_obj(d);
  157. return nth(d.getDate()) + ' ' + month_list_full[d.getMonth()] + ' ' + d.getFullYear();
  158. },
  159. get_today: function() {
  160. var today = new Date();
  161. var m = (today.getMonth()+1)+'';
  162. if(m.length==1)m='0'+m;
  163. var d = today.getDate()+'';
  164. if(d.length==1)d='0'+d;
  165. return today.getFullYear()+'-'+m+'-'+d;
  166. },
  167. get_cur_time: function() {
  168. return wn.datetime.now_time();
  169. }
  170. }
  171. wn.datetime.only_date = function(val) {
  172. if(val==null||val=='')return null;
  173. if(val.search(':')!=-1) {
  174. var tmp = val.split(' ');
  175. var d = tmp[0].split('-');
  176. } else {
  177. var d = val.split('-');
  178. }
  179. if(d.length==3)
  180. val = d[2]+'-'+d[1]+'-'+d[0];
  181. return val;
  182. }
  183. // globals (deprecate)
  184. var date = dateutil = wn.datetime;
  185. var get_today = wn.datetime.get_today
  186. var only_date = wn.datetime.only_date;