common.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. const browser = () => {
  2. var u = navigator.userAgent
  3. // app = navigator.appVersion;
  4. return {
  5. trident: u.indexOf('Trident') > -1, //IE内核
  6. presto: u.indexOf('Presto') > -1, //opera内核
  7. webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
  8. gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核
  9. mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
  10. ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
  11. // ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
  12. android: u.indexOf('DAYAAPPA') > -1 || u.indexOf('Adr') > -1, //android终端
  13. iPhone: u.indexOf('DAYAAPPI') > -1, //是否为iPhone或者QQHD浏览器
  14. iPad: u.indexOf('iPad') > -1, //是否iPad
  15. webApp: u.indexOf('Safari') == -1, //是否web应该程序,没有头部与底部
  16. weixin: u.indexOf('MicroMessenger') > -1, //是否微信 (2015-01-22新增)
  17. qq: u.match(/\sQQ/i) == " qq" //是否QQ
  18. }
  19. }
  20. /**
  21. * 小于10的数变成 (0x)
  22. * @param {数值} num
  23. */
  24. const getSTD = (num) => {
  25. return Number(num) >= 10 ? num : '0' + num
  26. }
  27. /**
  28. * 获取格式化的年月日
  29. * @param {日期} time
  30. * @param {不是IOS里使用(多用于接口参数)} noIos
  31. */
  32. const getYMD = (time, noIos) => {
  33. let tempDate = time || new Date()
  34. if (typeof (tempDate) == 'string') {
  35. tempDate = new Date(time.replace(/-/ig, '/'))
  36. }
  37. let t = noIos ? '-' : '/'
  38. let month = getSTD(tempDate.getMonth() + 1)
  39. let day = getSTD(tempDate.getDate())
  40. return tempDate.getFullYear() + t + month + t + day
  41. }
  42. /**
  43. *
  44. * @param {周几的索引值} index
  45. */
  46. const getWeekString = (index) => {
  47. let weekText = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
  48. return weekText[index]
  49. }
  50. /**
  51. * 计算课程的结束时间
  52. * @param {课程组开始时间} startDate
  53. * @param {购买几个月时间} buyMonths
  54. */
  55. const courseExpireDateArray = (startDate, buyMonths) => {
  56. let resultDate = new Date(startDate)
  57. let lastDayNum = nextMonthLastDay(resultDate.getFullYear(), (resultDate.getMonth() + 1 + buyMonths))
  58. if (lastDayNum[2] >= resultDate.getDate()) {
  59. resultDate.setMonth(resultDate.getMonth() + buyMonths)
  60. } else {
  61. resultDate = new Date(lastDayNum.join('/'))
  62. }
  63. resultDate.setDate(resultDate.getDate() - 1)
  64. return resultDate
  65. }
  66. const nextMonthLastDay = (year, month) => { //日期显示为次月最后一天
  67. if (month > 12) {
  68. month = month - 12;
  69. year = year + 1;
  70. }
  71. var day = nextMonthDay(year, month);
  72. return [year, month, day];
  73. }
  74. const nextMonthDay = (year, month) => { //判断每月多少天
  75. var day31 = [1, 3, 5, 7, 8, 10, 12];
  76. var day30 = [4, 6, 9, 11];
  77. if (day31.indexOf(month) > -1) {
  78. return 31;
  79. } else if (day30.indexOf(month) > -1) {
  80. return 30;
  81. } else {
  82. if (isLeapYear(year)) {
  83. return 29;
  84. } else {
  85. return 28;
  86. }
  87. }
  88. }
  89. /**
  90. * 判断是否为闰年
  91. */
  92. const isLeapYear = (year) => {
  93. return (year % 4 == 0) && (year % 100 != 0 || year % 400 == 0);
  94. }
  95. /**
  96. * 检测是否为手机号
  97. * @param {手机号} phoneNumber
  98. */
  99. const checkPhone = (phoneNumber) => {
  100. let result = true
  101. if (!(/^1(3|4|5|6|7|8|9)\d{9}$/.test(phoneNumber))) {
  102. result = false
  103. }
  104. return result
  105. }
  106. export {
  107. browser,
  108. getSTD,
  109. getYMD,
  110. getWeekString,
  111. nextMonthLastDay,
  112. nextMonthDay,
  113. isLeapYear,
  114. courseExpireDateArray,
  115. checkPhone
  116. }