Date.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. //#region
  2. Namespace.register("U.UF.D");
  3. //把2018/01/01 01:01:01转换为"2017-11-06 09:24:32"
  4. //把2018-01-01 01:01:01时间转换为数组格式[2018,01,01,01,01,01]
  5. //方便用户自己拼接不同格式的时间。
  6. //参数一:时间格式
  7. // 1、javascrpt 自带的时间格式 datetime类型 Sun Mar 04 2018 18:45:54 GMT+0800 (中国标准时间)
  8. // 2、sqlserver 时间格式 /Date(1364812396843)/
  9. // 3、mongodb 时间格式 2018/01/01 01:01:01
  10. // 4、mysql 时间格式 2018-01-01 01:01:01
  11. // 5、nodejs的json时间"2018-03-04T11:14:27.878Z"
  12. // 6,input type=datetime-local 时间格式
  13. U.UF.D.formatDateToArray = function (date) {
  14. var _datearr = [];
  15. //javascript自带时间无需处理,并且不是string类型
  16. if (typeof date == "string") {
  17. if (date.indexOf("Date") > -1) { //sqlserver 格式处理
  18. date = new Date(parseInt(date.match(/[0-9]+/g)[0])); //正则会把2-4种时间格式转换为第一种格式. 2018/01/01 01:01:01 => 20180101010101
  19. }
  20. else {
  21. date = new Date(date);
  22. }
  23. }
  24. return [
  25. date.getFullYear(),
  26. date.getMonth() + 1, //月份加1
  27. date.getDate(),
  28. date.getHours(),
  29. date.getMinutes(),
  30. date.getSeconds()
  31. ];
  32. }
  33. //把数据库的时间戳转换成可读时间
  34. //参数一:时间格式
  35. // 1、javascrpt 自带的时间格式 datetime类型 Sun Mar 04 2018 18:45:54 GMT+0800 (中国标准时间)
  36. // 2、sqlserver 时间格式 /Date(1364812396843)/
  37. // 3、mongodb 时间格式 2018/01/01 01:01:01
  38. // 4、mysql 时间格式 2018-01-01 01:01:01
  39. // 5、nodejs的json时间"2018-03-04T11:14:27.878Z"
  40. //获取时间戳对应的可读事件 Array返回数组事件 string 返回年月日处理
  41. //得到年月日,格式为:2018-01-01
  42. U.UF.D.getYearMonthDay = function (date) {
  43. if (date) {
  44. var _date = U.UF.D.formatDateToArray(date); //把时间格式化为数组
  45. var _dates = _date.slice(0, 3).join("-"); //拼凑需要的格式
  46. return _dates;
  47. }
  48. return "";
  49. }
  50. //把数据库的时间戳转换成可读时间
  51. //参数一:时间格式
  52. // 1、javascrpt 自带的时间格式 datetime类型 Sun Mar 04 2018 18:45:54 GMT+0800 (中国标准时间)
  53. // 2、sqlserver 时间格式 /Date(1364812396843)/
  54. // 3、mongodb 时间格式 2018/01/01 01:01:01
  55. // 4、mysql 时间格式 2018-01-01 01:01:01
  56. // 5、nodejs的json时间"2018-03-04T11:14:27.878Z"
  57. //获取时间戳对应的可读事件 Array返回数组事件 string 返回年月日处理
  58. //得到年月日,格式为:2018-01-01
  59. U.UF.D.getHoursMinutesSecond = function (date) {
  60. var _date = U.UF.D.formatDateToArray(date, true); //把时间格式化为数组
  61. var _dates = _date.slice(3, 6).join(":"); //拼凑需要的格式
  62. return _dates;
  63. }
  64. //参数一:时间格式
  65. // 1、javascrpt 自带的时间格式 datetime类型 Sun Mar 04 2018 18:45:54 GMT+0800 (中国标准时间)
  66. // 2、sqlserver 时间格式 /Date(1364812396843)/
  67. // 3、mongodb 时间格式 2018/01/01 01:01:01
  68. // 4、mysql 时间格式 2018-01-01 01:01:01
  69. // 5、nodejs的json时间"2018-03-04T11:14:27.878Z"
  70. U.UF.D.getFullTime = function (date) {
  71. var _date = U.UF.D.formatDateToArray(date, true); //把时间格式化为数组
  72. var _dates = _date.slice(0, 3).join("-") + " " + _date.slice(3, 6).join(":"); //拼凑需要的格式
  73. return _dates;
  74. }
  75. //
  76. //判断现在时间和从前时间的间隔,精确到分钟,小时,天数.超过3天则返回 月日时分 超过1年则返回 年月日时分
  77. //参数一:时间格式
  78. // 1、javascrpt 自带的时间格式 datetime类型 Sun Mar 04 2018 18:45:54 GMT+0800 (中国标准时间)
  79. // 2、sqlserver 时间格式 /Date(1364812396843)/
  80. // 3、mongodb 时间格式 2018/01/01 01:01:01
  81. // 4、mysql 时间格式 2018-01-01 01:01:01
  82. // 5、nodejs的json时间"2018-03-04T11:14:27.878Z"
  83. // 让学生重写
  84. U.UF.D.getDateInterval = function (date) {
  85. var _return, //申明变量
  86. _nowTime = U.UF.D.formatDateToArray(new Date(), "Array"), //申明变量_nowTime 并赋值
  87. _pastTime = U.UF.D.formatDateToArray(date, "Array"); //申明变量_pastTime 并赋值
  88. if (_nowTime[0] == _pastTime[0]) { //当年份为同一年时候
  89. if (_nowTime[2] - _pastTime[2] < 3 && _nowTime[1] == _pastTime[1]) { //判断是否是三天内发的
  90. if (_nowTime[2] == _pastTime[2]) { //判断是否是同一天的
  91. if (_nowTime[3] == _pastTime[3]) { //判断是否是同一小时的
  92. _return = _nowTime[4] - _pastTime[4] + '分钟前'; //是同一小时的 就给_return赋值
  93. } else {
  94. _return = _nowTime[3] - _pastTime[3] + '小时前'; //不是同一小时的 就给_return赋值
  95. }
  96. } else {
  97. _return = _nowTime[2] - _pastTime[2] + '天前'; //不是同一天时的 就给_return赋值
  98. }
  99. } else {
  100. _return = _pastTime[1] + '-' + _pastTime[2] + ' ' + _pastTime[3] + ':' + _pastTime[4] + ''; //不是三天之内的 就给_return赋值
  101. }
  102. } else {
  103. _return = _pastTime[0] + '-' + _pastTime[1] + '-' + _pastTime[2] + ' ' + _pastTime[3] + ':' + _pastTime[4] + ''; //不是同一小年的 就给_return赋值
  104. }
  105. return _return;
  106. }
  107. //可读时间转化成标准时间类或者时间戳sqlserver 时间格式 /Date(1364812396843)/
  108. //U.UF.D.toTimeStamp(UWE.birth_year + "-" + UWE.birth_month + "-" + UWE.birth_day, "-")
  109. //把javascript时间统一为sqlserver的时间,即时间戳。
  110. //第二个参数不要.Time stamp
  111. U.UF.D.toTimeStamp = function (uod) {
  112. var _timestamp;
  113. if (U.UF.C.isString(uod)) {
  114. _timestamp = Date.parse(uod); //如果不需要 转换获取时间戳
  115. }
  116. else if (Array.isArray(uod)) { //判断参数一是不是数组
  117. _timestamp = Date.UTC(uod[0], uod[1] - 1 || 1, uod[2] || 1, uod[3] - 8 || 1, uod[4] || 1, uod[5] || 1);
  118. } //转换获取时间戳
  119. else if (U.UF.D.isDate(uod) || !uod) { //判断参数一是不是 日期 类型
  120. _timestamp = Date.parse(uod || new Date()); //转换获取时间戳
  121. }
  122. return "/Date(" + _timestamp + ")/";
  123. }
  124. //获取指定年月的天数,如果为2018年2月,则返回28天。
  125. //参数一:
  126. // 1、javascrpt 自带的时间格式 datetime类型 Sun Mar 04 2018 18:45:54 GMT+0800 (中国标准时间)
  127. // 2、sqlserver 时间格式 /Date(1364812396843)/
  128. // 3、mongodb 时间格式 2018/01/01 01:01:01
  129. // 4、mysql 时间格式 2018-01-01 01:01:01
  130. // 5、nodejs的json时间"2018-03-04T11:14:27.878Z"
  131. U.UF.D.getDayOfMonth = function (date) {
  132. var _arrDate = U.UF.D.formatDateToArray(date); //把时间转换成数组形式
  133. var _date = new Date(_arrDate[0], _arrDate[1], 0); //根据年月生成js时间格式
  134. return _date.getDate(); //返回年月对应的日
  135. }
  136. //比较两个时间的大小,2015-10-10 > 2014-10-10 ..文件夹或者文件从数据库取出来后是升序,现在前端做降序,则会调用冒泡排序。这里是冒泡排序比较时间
  137. //参数一:时间
  138. //参数二:时间
  139. //返回字符串,"true"或者"false",如果时间一大于时间二,则为true,否则为false.相等返回euqal
  140. //SizeComparison
  141. U.UF.D.sizeComparison = function (date, date1) {
  142. var _date = U.UF.D.formatDateToArray(date), //把时间处理成数组 并赋值
  143. _date1 = U.UF.D.formatDateToArray(date1);
  144. for (var _i = 0; _i < _date.length; _i++) { //循环时间
  145. if (_date[_i] > _date1[_i]) return true; //判断数组中每一个元素的大小
  146. if (_date1[_i] > _date[_i]) return false; //date 大就返回true date1 大就返回 false
  147. }
  148. return 'equal'; //如果一模一样 返回'equal'
  149. }
  150. //Lowercase to uppercase
  151. //小写时间转大写时间
  152. U.UF.D.lowerToUpper = function (date) {
  153. var _i, _j,
  154. _dateArr = "",
  155. _dateWord = "",
  156. _word = [["零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"],
  157. ["", "十", "百", "千", "万", "亿", "兆"],
  158. ["年", "月", "日", "点", "分", "秒"]];
  159. !date ? date = new Date() : ''; //默认为当前时间
  160. date = U.UF.D.formatDateToArray(date); //把时间转换成数组
  161. for (_i = 0; _i < date.length; _i++) { //遍历数组
  162. _dateArr = String(date[_i]); //转换为字符串
  163. if (_i == 1) { //当处理到年时
  164. for (_j = 0; _j < _dateArr.length; _j++) { //遍历字符串
  165. _dateWord += _word[0][_dateArr[_j]]; //循环按照顺序大写
  166. } //写进_dateWord
  167. } else { //当处理其他时候
  168. if (Number(_dateArr) > 10) { //判断时间是否大于十
  169. _dateWord += _word[0][_dateArr[0]] + _word[0][10] + (_dateArr[1] == '0' ? '' : _word[0][_dateArr[1]]); //大于十就在两个之间插个大写十
  170. } else {
  171. _dateWord += _word[0][_dateArr[0]]; //就变大写
  172. }
  173. }
  174. _dateWord += _word[2][_i]; //加上单位('年')之类
  175. }
  176. return _dateWord;
  177. }
  178. //#endregion
  179. /**
  180. * 判断是否为时间
  181. *
  182. * @param {Date} 时间对象值
  183. * @return {boolean} 是否为Date
  184. */
  185. U.UF.D.isDate = function (date) {
  186. return U.UF.C.isObject(date) && U.UF.C.objectToString(date) == "[object Date]";
  187. }
  188. //
  189. U.UF.D.datetimeLocal = function (date) {
  190. return date;
  191. }