index.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. /**
  2. * 获取语种
  3. */
  4. export const getLocale = function() {
  5. const language = uni.getStorageSync('language')
  6. return language || 'zh-cn'
  7. }
  8. /**
  9. * 返回格式化的时间字符串
  10. * @param {string} startTime - 开始时间
  11. * @param {string} endTime - 结束时间
  12. * @param {string} [lang='zh-cn'] - 语言选项,默认为 'zh-cn'
  13. * @returns {string} - 格式化后的时间字符串
  14. */
  15. export const returnTimeFormat = function (startTime, endTime, lang = 'zh-cn') {
  16. // 创建日期对象
  17. const start_date = new Date(startTime);
  18. const end_date = new Date(endTime);
  19. // 判断日期是否为同一天、同一月、同一年
  20. const isSameDay = start_date.toDateString() === end_date.toDateString();
  21. const isSameMonth = start_date.getFullYear() === end_date.getFullYear() && start_date.getMonth() === end_date.getMonth();
  22. const isSameYear = start_date.getFullYear() === end_date.getFullYear();
  23. /**
  24. * 用于补零
  25. * @param {number} num - 需要补零的数字
  26. * @returns {string} - 补零后的字符串
  27. */
  28. function padZero(num) {
  29. return String(num).padStart(2, '0');
  30. }
  31. /**
  32. * 根据语言格式化日期
  33. * @param {Date} date - 日期对象
  34. * @param {string} lang - 语言选项
  35. * @returns {string} - 格式化后的日期字符串
  36. */
  37. function formatDate(date, lang) {
  38. const year = date.getFullYear();
  39. const month = padZero(date.getMonth() + 1);
  40. const day = padZero(date.getDate());
  41. const hours = padZero(date.getHours());
  42. const minutes = padZero(date.getMinutes());
  43. if (lang === 'zh-cn' || lang === 'ja-jp') {
  44. return `${year}年${month}月${day}日 ${hours}:${minutes}`;
  45. } else if (lang === 'en-us' || lang === 'en') {
  46. const options = { year: 'numeric', month: 'long', day: 'numeric', hour: 'numeric', minute: 'numeric' };
  47. return date.toLocaleDateString('en-US', options);
  48. }
  49. }
  50. /**
  51. * 格式化时间
  52. * @param {Date} date - 日期对象
  53. * @returns {string} - 格式化后的时间字符串
  54. */
  55. function formatTime(date) {
  56. const hours = padZero(date.getHours());
  57. const minutes = padZero(date.getMinutes());
  58. return `${hours}:${minutes}`;
  59. }
  60. let month = padZero(end_date.getMonth() + 1);
  61. let day = padZero(end_date.getDate());
  62. // 根据语言和日期关系返回相应的格式化字符串
  63. if (lang === 'zh-cn' || lang === 'ja-jp') {
  64. if (isSameDay) {
  65. return `${formatDate(start_date, 'zh-cn')} - ${formatTime(end_date)}`;
  66. } else if (isSameMonth) {
  67. return `${formatDate(start_date, 'zh-cn')} - ${month}月${day}日 ${formatTime(end_date)}`;
  68. } else if (isSameYear) {
  69. return `${formatDate(start_date, 'zh-cn')} - ${month}月${day}日 ${formatTime(end_date)}`;
  70. } else {
  71. return `${formatDate(start_date, 'zh-cn')} - ${formatDate(end_date, 'zh-cn')}`;
  72. }
  73. } else if (lang === 'en-us' || lang === 'en') {
  74. if (isSameDay) {
  75. return `${formatDate(start_date, 'en-us')} - ${formatTime(end_date)}`;
  76. } else if (isSameMonth) {
  77. const endFormatted = formatDate(end_date, 'en-us').split(', ');
  78. return `${formatDate(start_date, 'en-us')} - ${endFormatted[1]}`;
  79. } else if (isSameYear) {
  80. const endFormatted = formatDate(end_date, 'en-us').split(', ');
  81. return `${formatDate(start_date, 'en-us')} - ${endFormatted[1]}`;
  82. } else {
  83. return `${formatDate(start_date, 'en-us')} - ${formatDate(end_date, 'en-us')}`;
  84. }
  85. }
  86. }
  87. export function returnEscapeHtml(unsafe) {
  88. return unsafe
  89. .replace(/&/g, "&")
  90. .replace(/</g, "&lt;")
  91. .replace(/>/g, "&gt;")
  92. .replace(/"/g, "&quot;")
  93. .replace(/'/g, "&#039;");
  94. }
  95. export function convertRichTextToWXML(html) {
  96. // 定义一个正则表达式来匹配常见的HTML标签
  97. const htmlTagRegex = /<\s*(\w+)(?:\s+(?:[\w:-]+)(?:\s*=\s*(?:"[^"]*"|'[^']*'|[\w-]+)|[\w-]*))?\s*(?:\/>|>([\s\S]*?)<\/\1>)/g;
  98. // 定义一个函数来转换单个标签
  99. function convertTag(tag, content) {
  100. // 这里可以根据需要转换不同的标签,例如将<p>转换为<view>
  101. if (tag === 'p') {
  102. return `<view>${content}</view>`;
  103. }
  104. // 对于不支持的标签,可以选择忽略或者返回原始内容
  105. return `<${tag}>${content}</${tag}>`;
  106. }
  107. // 替换HTML标签
  108. return html.replace(htmlTagRegex, (match, p1, p2) => {
  109. return convertTag(p1.toLowerCase(), p2 ? p2 : '');
  110. });
  111. }