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.2 kB
import { isWeChat } from "../../utils/environment.mjs"; 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 (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; } export { calculateEndTime, convertToTimestamp, getDateAndTime, getTimezoneOffset };