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.
 
 
 
 
 
 

272 lines
7.1 KiB

  1. // Date
  2. function same_day(d1, d2) {
  3. if(d1.getFullYear()==d2.getFullYear() && d1.getMonth()==d2.getMonth() && d1.getDate()==d2.getDate())return true; else return false;
  4. }
  5. var month_list = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
  6. 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}
  7. var month_list_full = ['January','February','March','April','May','June','July','August','September','October','November','December'];
  8. var week_list = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'];
  9. var week_list_full = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];
  10. function int_to_str(i, len) {
  11. i = ''+i;
  12. if(i.length<len)for(c=0;c<(len-i.length);c++)i='0'+i;
  13. return i
  14. }
  15. wn.datetime = {
  16. str_to_obj: function(d) {
  17. if(!d) return new Date();
  18. var tm = [null, null];
  19. if(d.search(' ')!=-1) {
  20. var tm = d.split(' ')[1].split(':');
  21. var d = d.split(' ')[0];
  22. }
  23. if(d.search('-')!=-1) {
  24. var t = d.split('-'); return new Date(t[0],t[1]-1,t[2],tm[0],tm[1]);
  25. } else if(d.search('/')!=-1) {
  26. var t = d.split('/'); return new Date(t[0],t[1]-1,t[2],tm[0],tm[1]);
  27. } else {
  28. return new Date();
  29. }
  30. },
  31. obj_to_str: function(d) {
  32. return d.getFullYear() + '-' + int_to_str(d.getMonth()+1,2) + '-' + int_to_str(d.getDate(),2);
  33. },
  34. obj_to_user: function(d) {
  35. return dateutil.str_to_user(dateutil.obj_to_str(d));
  36. },
  37. get_diff: function(d1, d2) {
  38. return ((d1-d2) / 86400000);
  39. },
  40. add_days: function(d, days) {
  41. d.setTime(d.getTime()+(days*24*60*60*1000)); return d
  42. },
  43. add_months: function(d, months) {
  44. dt = dateutil.str_to_obj(d)
  45. new_dt = new Date(dt.getFullYear(), dt.getMonth()+months, dt.getDate())
  46. if(new_dt.getDate() != dt.getDate()) {
  47. // month has changed, go the last date of prev month
  48. return dateutil.month_end(new Date(dt.getFullYear(), dt.getMonth()+months, 1))
  49. }
  50. return dateutil.obj_to_str(new_dt);
  51. },
  52. month_start: function() {
  53. var d = new Date();
  54. return d.getFullYear() + '-' + int_to_str(d.getMonth()+1,2) + '-01';
  55. },
  56. month_end: function(d) {
  57. if(!d)var d = new Date();
  58. var m = d.getMonth() + 1;
  59. var y = d.getFullYear();
  60. last_date = month_last[m];
  61. if(m==2 && (y % 4)==0 && ((y % 100)!=0 || (y % 400)==0)) // leap year test
  62. last_date = 29;
  63. return y+'-'+int_to_str(m,2)+'-'+last_date;
  64. },
  65. get_user_fmt: function() {
  66. var t = wn.control_panel.date_format;
  67. if(!t) t = 'dd-mm-yyyy';
  68. return t;
  69. },
  70. str_to_user: function(val, no_time_str) {
  71. var user_fmt = dateutil.get_user_fmt();
  72. var time_str = '';
  73. //alert(user_fmt);
  74. if(val==null||val=='')return null;
  75. // separate time string if there
  76. if(val.search(':')!=-1) {
  77. var tmp = val.split(' ');
  78. if(tmp[1])
  79. time_str = ' ' + tmp[1];
  80. var d = tmp[0];
  81. } else {
  82. var d = val;
  83. }
  84. if(no_time_str)time_str = '';
  85. // set to user fmt
  86. d = d.split('-');
  87. if(d.length==3) {
  88. if(user_fmt=='dd-mm-yyyy')
  89. val = d[2]+'-'+d[1]+'-'+d[0] + time_str;
  90. else if(user_fmt=='dd/mm/yyyy')
  91. val = d[2]+'/'+d[1]+'/'+d[0] + time_str;
  92. else if(user_fmt=='yyyy-mm-dd')
  93. val = d[0]+'-'+d[1]+'-'+d[2] + time_str;
  94. else if(user_fmt=='mm/dd/yyyy')
  95. val = d[1]+'/'+d[2]+'/'+d[0] + time_str;
  96. else if(user_fmt=='mm-dd-yyyy')
  97. val = d[1]+'-'+d[2]+'-'+d[0] + time_str;
  98. }
  99. return val;
  100. },
  101. full_str: function() {
  102. var d = new Date();
  103. return d.getFullYear() + '-' + (d.getMonth()+1) + '-' + d.getDate() + ' '
  104. + d.getHours() + ':' + d.getMinutes() + ':' + d.getSeconds();
  105. },
  106. user_to_str: function(d) {
  107. var user_fmt = this.get_user_fmt();
  108. if(user_fmt=='dd-mm-yyyy') {
  109. var d = d.split('-');
  110. return d[2]+'-'+d[1]+'-'+d[0];
  111. }
  112. else if(user_fmt=='dd/mm/yyyy') {
  113. var d = d.split('/');
  114. return d[2]+'-'+d[1]+'-'+d[0];
  115. }
  116. else if(user_fmt=='yyyy-mm-dd') {
  117. return d;
  118. }
  119. else if(user_fmt=='mm/dd/yyyy') {
  120. var d = d.split('/');
  121. return d[2]+'-'+d[0]+'-'+d[1];
  122. }
  123. else if(user_fmt=='mm-dd-yyyy') {
  124. var d = d.split('-');
  125. return d[2]+'-'+d[0]+'-'+d[1];
  126. }
  127. },
  128. global_date_format: function(d) {
  129. if(d.substr) d = this.str_to_obj(d);
  130. return d.getDate() + ' ' + month_list_full[d.getMonth()] + ' ' + d.getFullYear();
  131. },
  132. get_today: function() {
  133. var today = new Date();
  134. var m = (today.getMonth()+1)+'';
  135. if(m.length==1)m='0'+m;
  136. var d = today.getDate()+'';
  137. if(d.length==1)d='0'+d;
  138. return today.getFullYear()+'-'+m+'-'+d;
  139. },
  140. get_cur_time: function() {
  141. // returns current time in hh:mm string
  142. var d = new Date();
  143. var hh = d.getHours() + ''
  144. var mm = cint(d.getMinutes()/5)*5 + ''
  145. return (hh.length==1 ? '0'+hh : hh) + ':' + (mm.length==1 ? '0'+mm : mm);
  146. }
  147. }
  148. wn.datetime.only_date = function(val) {
  149. if(val==null||val=='')return null;
  150. if(val.search(':')!=-1) {
  151. var tmp = val.split(' ');
  152. var d = tmp[0].split('-');
  153. } else {
  154. var d = val.split('-');
  155. }
  156. if(d.length==3)
  157. val = d[2]+'-'+d[1]+'-'+d[0];
  158. return val;
  159. }
  160. // Time
  161. wn.datetime.time_to_ampm = function(v) {
  162. if(!v) {
  163. var d = new Date();
  164. var t = [d.getHours(), cint(d.getMinutes()/5)*5]
  165. } else {
  166. var t = v.split(':');
  167. }
  168. if(t.length!=2){
  169. show_alert('[set_time] Incorect time format');
  170. return;
  171. }
  172. if(cint(t[0]) == 0) var ret = ['12', t[1], 'AM'];
  173. else if(cint(t[0]) < 12) var ret = [cint(t[0]) + '', t[1], 'AM'];
  174. else if(cint(t[0]) == 12) var ret = ['12', t[1], 'PM'];
  175. else var ret = [(cint(t[0]) - 12) + '', t[1], 'PM'];
  176. return ret;
  177. }
  178. wn.datetime.time_to_hhmm = function(hh,mm,am) {
  179. if(am == 'AM' && hh=='12') {
  180. hh = '00';
  181. } else if(am == 'PM' && hh!='12') {
  182. hh = cint(hh) + 12;
  183. }
  184. return hh + ':' + mm;
  185. }
  186. /*
  187. * JavaScript Pretty Date
  188. * Copyright (c) 2011 John Resig (ejohn.org)
  189. * Licensed under the MIT and GPL licenses.
  190. */
  191. // Takes an ISO time and returns a string representing how
  192. // long ago the date represents.
  193. function prettyDate(time){
  194. if(!time) return ''
  195. var date = new Date((time || "").replace(/-/g,"/").replace(/[TZ]/g," ").replace(/\.[0-9]*/, "")),
  196. diff = (((new Date()).getTime() - date.getTime()) / 1000),
  197. day_diff = Math.floor(diff / 86400);
  198. if ( isNaN(day_diff) || day_diff < 0 )
  199. return '';
  200. return day_diff == 0 && (
  201. diff < 60 && "just now" ||
  202. diff < 120 && "1 minute ago" ||
  203. diff < 3600 && Math.floor( diff / 60 ) + " minutes ago" ||
  204. diff < 7200 && "1 hour ago" ||
  205. diff < 86400 && Math.floor( diff / 3600 ) + " hours ago") ||
  206. day_diff == 1 && "Yesterday" ||
  207. day_diff < 7 && day_diff + " days ago" ||
  208. day_diff < 31 && Math.ceil( day_diff / 7 ) + " weeks ago" ||
  209. day_diff < 365 && Math.ceil( day_diff / 30) + " months ago" ||
  210. "more than " + Math.floor( day_diff / 365 ) + " year(s) ago";
  211. }
  212. // If jQuery is included in the page, adds a jQuery plugin to handle it as well
  213. if ( typeof jQuery != "undefined" )
  214. jQuery.fn.prettyDate = function(){
  215. return this.each(function(){
  216. var date = prettyDate(this.title);
  217. if ( date )
  218. jQuery(this).text( date );
  219. });
  220. };
  221. var comment_when = prettyDate;
  222. wn.datetme.comment_when = prettyDate;
  223. // globals (deprecate)
  224. var date = dateutil = wn.datetime;
  225. var get_today = wn.datetime.get_today
  226. var time_to_ampm = wn.datetime.time_to_ampm;
  227. var time_to_hhmm = wn.datetime.time_to_hhmm;
  228. var only_date = wn.datetime.only_date;