UNPKG

@tencentcloud/roomkit-web-vue3

Version:

<h1 align="center"> TUIRoomKit</h1> Conference (TUIRoomKit) is a product suitable for multi-person audio and video conversation scenarios such as business meetings, webinars, and online education. By integrating this product, you can add room management,

87 lines (86 loc) 3.39 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const environment = require("../../utils/environment.js"); const formatDateTime = (date) => { const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, "0"); const day = String(date.getDate()).padStart(2, "0"); const hour = String(date.getHours()).padStart(2, "0"); const minute = String(date.getMinutes()).padStart(2, "0"); return `${month}/${day}/${year}, ${hour}:${minute}`; }; const getDateAndTime = (date, timeZone) => { let formattedDate; let currentTimeZone = timeZone; if (environment.isWeChat) { formattedDate = formatDateTime(date); } else { { currentTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone; } const formatter = new Intl.DateTimeFormat("en-US", { year: "numeric", month: "2-digit", day: "2-digit", hour: "2-digit", minute: "2-digit", hour12: false, // Use 24-hour format currentTimeZone }); formattedDate = formatter.format(date); } const [month, day, year, hour, minute] = formattedDate.split(/[\s,:/]+/).filter((part) => part !== "AM" && part !== "PM"); const roundedMinute = Math.ceil(parseInt(minute) / 15) * 15; const adjustedHour = roundedMinute === 60 ? parseInt(hour) + 1 : parseInt(hour); const adjustedMinute = roundedMinute === 60 ? 0 : roundedMinute; const adjustedDate = new Date( parseInt(year), parseInt(month) - 1, parseInt(day), adjustedHour, adjustedMinute ); if (adjustedDate < date) { adjustedDate.setMinutes(adjustedDate.getMinutes() + 15); } const intHour = parseInt(hour); const intMinute = parseInt(minute); return { date: new Date(parseInt(year), parseInt(month) - 1, parseInt(day)), laterTime: `${adjustedHour < 10 ? `0${adjustedHour}` : adjustedHour}:${adjustedMinute < 10 ? `0${adjustedMinute}` : adjustedMinute}`, time: `${intHour < 10 ? `0${intHour}` : intHour}:${intMinute < 10 ? `0${intMinute}` : intMinute}` }; }; const convertToTimestamp = (date, time, timezone, offset = 1, referenceTimezone) => { const year = date.getFullYear(); const month = date.getMonth(); const day = date.getDate(); const [hour, minute] = time.split(":").map(Number); const dateTime = new Date(year, month, day, hour, minute); const timezoneOffset = offset * getTimezoneOffset(timezone, referenceTimezone) * 60 * 1e3; return dateTime.getTime() - timezoneOffset; }; const calculateEndTime = (startTime, duration) => { const endTime = startTime + duration * 1e3; return endTime; }; function getTimezoneOffset(targetTimezone, referenceTimezone = "UTC") { const now = Date.now(); const referenceDate = referenceTimezone === "UTC" ? new Date(now).toISOString() : new Date(now).toLocaleString("en-US", { timeZone: referenceTimezone, hour12: false }); const targetDate = new Date(now).toLocaleString("en-US", { timeZone: targetTimezone, hour12: false }); const referenceTime = new Date(referenceDate).getTime(); const targetTime = new Date(targetDate).getTime(); const offset = Math.round((targetTime - referenceTime) / (1e3 * 60)); return offset; } exports.calculateEndTime = calculateEndTime; exports.convertToTimestamp = convertToTimestamp; exports.getDateAndTime = getDateAndTime; exports.getTimezoneOffset = getTimezoneOffset;