123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- /**
- * 获取语种
- */
- export const getLocale = function() {
- const language = uni.getStorageSync('language')
- return language || 'zh-cn'
- }
- export const scrollToElement = (selector) => {
- // 创建选择器查询
- const query = uni.createSelectorQuery().in(this);
- // 获取目标元素的位置信息
- query.select('#targetElement').boundingClientRect(data => {
- if (data) {
- // 滚动到目标元素的位置
- uni.pageScrollTo({
- scrollTop: data.top, // 目标元素距离页面顶部的距离
- duration: 300 // 滚动动画的持续时间,单位 ms
- });
- }
- }).exec();
- }
- /**
- * 返回格式化的时间字符串
- * @param {string} startTime - 开始时间
- * @param {string} endTime - 结束时间
- * @param {string} [lang='zh-cn'] - 语言选项,默认为 'zh-cn'
- * @returns {string} - 格式化后的时间字符串
- */
- export const returnTimeFormat = function (startTime, endTime, lang = 'zh-cn') {
- // 创建日期对象
- const start_date = new Date(startTime);
- const end_date = new Date(endTime);
- // 判断日期是否为同一天、同一月、同一年
- const isSameDay = start_date.toDateString() === end_date.toDateString();
- const isSameMonth = start_date.getFullYear() === end_date.getFullYear() && start_date.getMonth() === end_date.getMonth();
- const isSameYear = start_date.getFullYear() === end_date.getFullYear();
- /**
- * 用于补零
- * @param {number} num - 需要补零的数字
- * @returns {string} - 补零后的字符串
- */
- function padZero(num) {
- return String(num).padStart(2, '0');
- }
- /**
- * 根据语言格式化日期
- * @param {Date} date - 日期对象
- * @param {string} lang - 语言选项
- * @returns {string} - 格式化后的日期字符串
- */
- function formatDate(date, lang) {
- const year = date.getFullYear();
- const month = padZero(date.getMonth() + 1);
- const day = padZero(date.getDate());
- const hours = padZero(date.getHours());
- const minutes = padZero(date.getMinutes());
- if (lang === 'zh-cn' || lang === 'ja-jp') {
- return `${year}年${month}月${day}日 ${hours}:${minutes}`;
- } else if (lang === 'en-us' || lang === 'en') {
- const options = { year: 'numeric', month: 'long', day: 'numeric', hour: 'numeric', minute: 'numeric' };
- return date.toLocaleDateString('en-US', options);
- }
- }
- /**
- * 格式化时间
- * @param {Date} date - 日期对象
- * @returns {string} - 格式化后的时间字符串
- */
- function formatTime(date) {
- const hours = padZero(date.getHours());
- const minutes = padZero(date.getMinutes());
- return `${hours}:${minutes}`;
- }
- let month = padZero(end_date.getMonth() + 1);
- let day = padZero(end_date.getDate());
- // 根据语言和日期关系返回相应的格式化字符串
- if (lang === 'zh-cn' || lang === 'ja-jp') {
- if (isSameDay) {
- return `${formatDate(start_date, 'zh-cn')} - ${formatTime(end_date)}`;
- } else if (isSameMonth) {
- return `${formatDate(start_date, 'zh-cn')} - ${month}月${day}日 ${formatTime(end_date)}`;
- } else if (isSameYear) {
- return `${formatDate(start_date, 'zh-cn')} - ${month}月${day}日 ${formatTime(end_date)}`;
- } else {
- return `${formatDate(start_date, 'zh-cn')} - ${formatDate(end_date, 'zh-cn')}`;
- }
- } else if (lang === 'en-us' || lang === 'en') {
- if (isSameDay) {
- return `${formatDate(start_date, 'en-us')} - ${formatTime(end_date)}`;
- } else if (isSameMonth) {
- const endFormatted = formatDate(end_date, 'en-us').split(', ');
- return `${formatDate(start_date, 'en-us')} - ${endFormatted[1]}`;
- } else if (isSameYear) {
- const endFormatted = formatDate(end_date, 'en-us').split(', ');
- return `${formatDate(start_date, 'en-us')} - ${endFormatted[1]}`;
- } else {
- return `${formatDate(start_date, 'en-us')} - ${formatDate(end_date, 'en-us')}`;
- }
- }
- }
- export function returnEscapeHtml(unsafe) {
- return unsafe
- .replace(/&/g, "&")
- .replace(/</g, "<")
- .replace(/>/g, ">")
- .replace(/"/g, """)
- .replace(/'/g, "'");
- }
- export function convertRichTextToWXML(html) {
- // 定义一个正则表达式来匹配常见的HTML标签
- const htmlTagRegex = /<\s*(\w+)(?:\s+(?:[\w:-]+)(?:\s*=\s*(?:"[^"]*"|'[^']*'|[\w-]+)|[\w-]*))?\s*(?:\/>|>([\s\S]*?)<\/\1>)/g;
- // 定义一个函数来转换单个标签
- function convertTag(tag, content) {
- // 这里可以根据需要转换不同的标签,例如将<p>转换为<view>
- if (tag === 'p') {
- return `<view>${content}</view>`;
- }
- // 对于不支持的标签,可以选择忽略或者返回原始内容
- return `<${tag}>${content}</${tag}>`;
- }
- // 替换HTML标签
- return html.replace(htmlTagRegex, (match, p1, p2) => {
- return convertTag(p1.toLowerCase(), p2 ? p2 : '');
- });
- }
|