GetDate.js 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  1. const GetDate = {
  2. withData: (num) => {
  3. let param = parseInt(num);
  4. return param < 10 ? '0' + param : '' + param;
  5. },
  6. getTimes(str){
  7. var strs = str.split(' ');
  8. var strs1 = strs[0] ? strs[0].split('-') : '2000-01-01'.split('-');
  9. var strs2 = strs[1] ? strs[1].split(':') : '00:00:00'.split(':');
  10. var year = strs1[0] ? strs1[0] : 2000;
  11. var month = strs1[1] ? strs1[1] : 1;
  12. var day = strs1[2] ? strs1[2] : 1;
  13. var hour = strs2[0] ? strs2[0] : 0;
  14. var minute = strs2[1] ? strs2[1] : 0;
  15. var second = strs2[2] ? strs2[2] : 0;
  16. var newstr = year +'/'+ month +'/'+ day +' '+ hour +':'+ minute +':'+ second;
  17. return new Date(newstr.replace(/-/g,'/')).getTime();
  18. },
  19. getCurrentTimes(time = new Date()){
  20. const date = new Date(time);
  21. const year = date.getFullYear();
  22. const month = date.getMonth() + 1;
  23. const day = date.getDate();
  24. const hour = date.getHours();
  25. const minute = date.getMinutes();
  26. const second = date.getSeconds();
  27. return {
  28. detail: {
  29. year: year,
  30. month: month,
  31. day: day,
  32. hour: hour,
  33. minute: minute,
  34. second: second
  35. }
  36. }
  37. },
  38. format(arr){
  39. let curarr = [];
  40. let curarr0 = [];
  41. let str = '';
  42. arr.forEach((cur,index) => {
  43. let o = GetDate.withData(cur);
  44. if(index > 2){
  45. curarr.push(o);
  46. }else{
  47. curarr0.push(o);
  48. }
  49. })
  50. if(arr.length < 4){
  51. str = curarr0.join('-');
  52. }else{
  53. str = curarr0.join('-') + ' ' + curarr.join(':');
  54. }
  55. return str;
  56. },
  57. getCurrentStringValue(str){
  58. let newstr = str.split(' ');
  59. if(newstr && newstr[1]){
  60. let arr = [...newstr[0].split('-'),...newstr[1].split(':')];
  61. return arr;
  62. }
  63. return newstr[0].split('-');
  64. },
  65. getCompare(curp,startp,endp,timesp){
  66. let cur = GetDate.getTimes(curp);
  67. let start = GetDate.getTimes(startp);
  68. let end = GetDate.getTimes(endp);
  69. if(cur < start){
  70. return GetDate.getTimeIndex(timesp,GetDate.getCurrentStringValue(startp));
  71. }else if(cur > end){
  72. return GetDate.getTimeIndex(timesp,GetDate.getCurrentStringValue(endp));
  73. }else{
  74. return GetDate.getTimeIndex(timesp,GetDate.getCurrentStringValue(curp));
  75. }
  76. },
  77. getChooseArr(times,indexs){
  78. let arr = [];
  79. times.forEach((cur,index) => arr.push(cur[indexs[index]]));
  80. return arr;
  81. },
  82. getNewArray(arr){
  83. let newarr = [];
  84. arr.forEach(cur => newarr.push(cur));
  85. return newarr;
  86. },
  87. getLoopArray: (start, end) => {
  88. var start = start || 0;
  89. var end = end || 1;
  90. var array = [];
  91. for (var i = start; i <= end; i++) {
  92. array.push(GetDate.withData(i));
  93. }
  94. return array;
  95. },
  96. getMonthDay: (year, month) => {
  97. var flag = year % 400 == 0 || (year % 4 == 0 && year % 100 != 0), array = null;
  98. switch (month) {
  99. case '01':
  100. case '03':
  101. case '05':
  102. case '07':
  103. case '08':
  104. case '10':
  105. case '12':
  106. array = GetDate.getLoopArray(1, 31)
  107. break;
  108. case '04':
  109. case '06':
  110. case '09':
  111. case '11':
  112. array = GetDate.getLoopArray(1, 30)
  113. break;
  114. case '02':
  115. array = flag ? GetDate.getLoopArray(1, 29) : GetDate.getLoopArray(1, 28)
  116. break;
  117. default:
  118. array = GetDate.getLoopArray(1, 31)
  119. }
  120. return array;
  121. },
  122. getIndependentTimes(opts){
  123. var {
  124. startTimes,
  125. endTimes,
  126. curTimes,
  127. fields
  128. } = opts;
  129. var {
  130. year:startyear = 2021,
  131. month:startmonth = 1,
  132. day:startday = 1,
  133. hour:starthour = 0,
  134. minute:startminute = 0,
  135. second:startsecond = 0
  136. } = startTimes;
  137. var {
  138. year:endyear = 2021,
  139. month:endmonth = 1,
  140. day:endday = 1,
  141. hour:endhour = 0,
  142. minute:endminute = 0,
  143. second:endsecond = 0
  144. } = endTimes;
  145. var {
  146. year:curyear = 2021,
  147. month:curmonth = 1,
  148. day:curday = 1,
  149. hour:curhour = 0,
  150. minute:curminute = 0,
  151. second:cursecond = 0
  152. } = curTimes;
  153. return {
  154. startyear,
  155. startmonth,
  156. startday,
  157. starthour,
  158. startminute,
  159. startsecond,
  160. endyear,
  161. endmonth,
  162. endday,
  163. endhour,
  164. endminute,
  165. endsecond,
  166. curyear,
  167. curmonth,
  168. curday,
  169. curhour,
  170. curminute,
  171. cursecond
  172. }
  173. },
  174. getYears(opts){
  175. var years = GetDate.getLoopArray(opts.startyear, opts.endyear);
  176. return years;
  177. },
  178. getMonths(opts){
  179. var months = GetDate.getLoopArray(1, 12);
  180. if(opts.curyear == opts.startyear){
  181. months = months.filter(cur => cur >= opts.startmonth);
  182. }
  183. if(opts.curyear == opts.endyear){
  184. months = months.filter(cur => cur <= opts.endmonth);
  185. }
  186. return months;
  187. },
  188. getDays(opts){
  189. var days = GetDate.getMonthDay(opts.curyear, GetDate.withData(opts.curmonth));
  190. if(opts.curyear == opts.startyear && opts.curmonth == opts.startmonth){
  191. days = days.filter(cur => cur >= opts.startday);
  192. }
  193. if(opts.curyear == opts.endyear && opts.curmonth == opts.endmonth){
  194. days = days.filter(cur => cur <= opts.endday);
  195. }
  196. return days;
  197. },
  198. getHours(opts){
  199. var hours = GetDate.getLoopArray(0, 23);
  200. if(opts.curyear == opts.startyear && opts.curmonth == opts.startmonth && opts.curday == opts.startday){
  201. hours = hours.filter(cur => cur >= opts.starthour);
  202. }
  203. if(opts.curyear == opts.endyear && opts.curmonth == opts.endmonth && opts.curday == opts.endday){
  204. hours = hours.filter(cur => cur <= opts.endhour);
  205. }
  206. return hours;
  207. },
  208. getMinutes(opts){
  209. var minutes = GetDate.getLoopArray(0, 59);
  210. if(opts.curyear == opts.startyear && opts.curmonth == opts.startmonth && opts.curday == opts.startday && opts.curhour == opts.starthour){
  211. minutes = minutes.filter(cur => cur >= opts.startminute);
  212. }
  213. if(opts.curyear == opts.endyear && opts.curmonth == opts.endmonth && opts.curday == opts.endday && opts.curhour == opts.endhour){
  214. minutes = minutes.filter(cur => cur <= opts.endminute);
  215. }
  216. return minutes;
  217. },
  218. getSeconds(opts){
  219. var seconds = GetDate.getLoopArray(0, 59);
  220. if(opts.curyear == opts.startyear && opts.curmonth == opts.startmonth && opts.curday == opts.startday && opts.curhour == opts.starthour && opts.curminute == opts.startminute){
  221. seconds = seconds.filter(cur => cur >= opts.startsecond);
  222. }
  223. if(opts.curyear == opts.endyear && opts.curmonth == opts.endmonth && opts.curday == opts.endday && opts.curhour == opts.endhour && opts.curminute == opts.endminute){
  224. seconds = seconds.filter(cur => cur <= opts.endsecond);
  225. }
  226. return seconds;
  227. },
  228. getDateTimes: (opts) => {
  229. var alltimes = GetDate.getIndependentTimes(opts);
  230. var years = GetDate.getYears(alltimes);
  231. var months = GetDate.getMonths(alltimes);
  232. var days = GetDate.getDays(alltimes);
  233. var hours = GetDate.getHours(alltimes);
  234. var minutes = GetDate.getMinutes(alltimes);
  235. var seconds = GetDate.getSeconds(alltimes);
  236. var times = {
  237. year: [years],
  238. month: [years, months],
  239. day: [years, months, days],
  240. hour: [years, months, days, hours],
  241. minute: [years, months, days, hours, minutes],
  242. second: [years, months, days, hours, minutes, seconds]
  243. };
  244. return times[opts.fields] || times.second;
  245. },
  246. getIndex(arr,target){
  247. let len = arr.length;
  248. for(let i = 0; i < len; i++){
  249. if(arr[i] == target){
  250. return i;
  251. }
  252. }
  253. },
  254. getTimeIndex(arrs, targets){
  255. let len = arrs.length;
  256. let arr = [];
  257. for(let i = 0; i < len; i++){
  258. arr.push(GetDate.getIndex(arrs[i], targets[i]))
  259. }
  260. return arr;
  261. },
  262. error(str){
  263. console.error(str);
  264. }
  265. }
  266. module.exports = GetDate;