util.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. const formatTime = (date, fmt) => {
  2. if (!date) {
  3. return fmt;
  4. }
  5. var o = {
  6. "M+": date.getMonth() + 1, //月份
  7. "d+": date.getDate(), //日
  8. "H+": date.getHours(), //小时
  9. "m+": date.getMinutes(), //分
  10. "s+": date.getSeconds(), //秒
  11. "q+": Math.floor((date.getMonth() + 3) / 3), //季度
  12. "S": date.getMilliseconds() //毫秒
  13. };
  14. if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
  15. for (var k in o)
  16. if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
  17. return fmt;
  18. }
  19. const formatNumber = n => {
  20. n = n.toString()
  21. return n[1] ? n : '0' + n
  22. }
  23. //将年月日数组转成时间戳
  24. const argusToTimestamp = arr => {
  25. var lenth = arr.length;
  26. if (lenth < 3) {
  27. for (var i = 0; i < 3 - lenth; i++) {
  28. arr.push("01")
  29. }
  30. }
  31. return Date.parse(new Date(arr.join("/")))
  32. }
  33. // 时间戳转成年月
  34. function formateym(dates, split = ".") {
  35. var date = new Date(+dates)
  36. var year = date.getFullYear()
  37. var month = date.getMonth() + 1
  38. var day = date.getDate()
  39. return date.getFullYear() + split + formatNumber(date.getMonth() + 1)
  40. }
  41. // 时间转成年月
  42. function formateYM(date, status = true) {
  43. const _date = date.replace(/-/g, '/')
  44. var time = new Date(date)
  45. var year = time.getFullYear()
  46. var month = time.getMonth() + 1
  47. var day = time.getDate()
  48. if (status) {
  49. return `${year}年${month}月`
  50. } else {
  51. return `${year}年${month}月${day}`
  52. }
  53. }
  54. // 时间转成年月
  55. function formatetime(date, str, status = true) {
  56. const _date = date.replace ? date.replace(/-/g, '/') : date;
  57. var time = new Date(_date)
  58. var year = time.getFullYear()
  59. var month = time.getMonth() + 1
  60. var day = time.getDate()
  61. if (status) {
  62. return `${year}${str}${month}`
  63. } else {
  64. return `${year}${str}${month}${str}${day}`
  65. }
  66. }
  67. function testPhone(data) {
  68. const phone_zz = /^1[3-9]\d{9}$/;
  69. return phone_zz.test(data)
  70. }
  71. /**
  72. * 判断经纬度是否超出中国境内
  73. */
  74. function isLocationOutOfChina(latitude, longitude) {
  75. if (longitude < 72.004 || longitude > 137.8347 || latitude < 0.8293 || latitude > 55.8271)
  76. return true;
  77. return false;
  78. }
  79. function transformLatWithXY(x, y) {
  80. var pi = 3.14159265358979324;
  81. var lat = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * Math.sqrt(Math.abs(x));
  82. lat += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0;
  83. lat += (20.0 * Math.sin(y * pi) + 40.0 * Math.sin(y / 3.0 * pi)) * 2.0 / 3.0;
  84. lat += (160.0 * Math.sin(y / 12.0 * pi) + 320 * Math.sin(y * pi / 30.0)) * 2.0 / 3.0;
  85. return lat;
  86. }
  87. function transformLonWithXY(x, y) {
  88. var pi = 3.14159265358979324;
  89. var lon = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * Math.sqrt(Math.abs(x));
  90. lon += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0;
  91. lon += (20.0 * Math.sin(x * pi) + 40.0 * Math.sin(x / 3.0 * pi)) * 2.0 / 3.0;
  92. lon += (150.0 * Math.sin(x / 12.0 * pi) + 300.0 * Math.sin(x / 30.0 * pi)) * 2.0 / 3.0;
  93. return lon;
  94. }
  95. function isContains(point, p1, p2) {
  96. return (point.latitude >= Math.min(p1.latitude, p2.latitude) && point.latitude <= Math.max(p1.latitude, p2.latitude)) && (point.longitude >= Math.min(p1.longitude, p2.longitude) && point.longitude <= Math.max(p1.longitude, p2.longitude));
  97. }
  98. /**
  99. * 将WGS-84(国际标准)转为GCJ-02(火星坐标):
  100. */
  101. function transformFromWGSToGCJ(latitude, longitude) {
  102. var lat = "";
  103. var lon = "";
  104. var ee = 0.00669342162296594323;
  105. var a = 6378245.0;
  106. var pi = 3.14159265358979324;
  107. if (isLocationOutOfChina(latitude, longitude)) {
  108. lat = latitude;
  109. lon = longitude;
  110. }
  111. else {
  112. var adjustLat = transformLatWithXY(longitude - 105.0, latitude - 35.0);
  113. var adjustLon = transformLonWithXY(longitude - 105.0, latitude - 35.0);
  114. var radLat = latitude / 180.0 * pi;
  115. var magic = Math.sin(radLat);
  116. magic = 1 - ee * magic * magic;
  117. var sqrtMagic = Math.sqrt(magic);
  118. adjustLat = (adjustLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi);
  119. adjustLon = (adjustLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * pi);
  120. latitude = latitude + adjustLat;
  121. longitude = longitude + adjustLon;
  122. }
  123. return { latitude: latitude, longitude: longitude };
  124. }
  125. module.exports = {
  126. formatTime: formatTime,
  127. formatNumber,
  128. formateym,
  129. argusToTimestamp,
  130. formateYM,
  131. formatetime,
  132. testPhone,
  133. transformFromWGSToGCJ
  134. }