Перейти к основному содержимому
clawam tools
Инструменты Документы Daoark EN Главная Главная / Время и дата›' + TIMEZONES[i].name + ''; } srcSel.innerHTML = opts; dstSel.innerHTML = opts; srcSel.value = 'Asia/Shanghai'; dstSel.value = 'America/New_York'; } // 跨时区转换: 输入 datetime-local (无时区) + srcTz → 真实 UTC → dstTz 显示 function convert(srcDt, srcTz, dstTz) { // datetime-local "2026-06-04T14:30" 视作 srcTz 本地时间 var parts = srcDt.split('T'); var dateParts = parts[0].split('-'); var timeParts = parts[1].split(':'); var year = parseInt(dateParts[0]); var month = parseInt(dateParts[1]) - 1; var day = parseInt(dateParts[2]); var hour = parseInt(timeParts[0]); var min = parseInt(timeParts[1]); // 用"伪造 UTC"得到 epoch,然后用 src tz 字符串化得到 src 时区时间,反算偏移 var fakeUtc = Date.UTC(year, month, day, hour, min, 0); var srcStr = new Date(fakeUtc).toLocaleString('en-US', {timeZone: srcTz, hour12: false}); var srcDate = new Date(srcStr); // 实际 UTC = fakeUtc - (srcDate - fakeUtc) var offset = srcDate.getTime() - fakeUtc; var actualUtc = fakeUtc - offset; // 转为 dst tz 字符串 var dstStr = new Date(actualUtc).toLocaleString('en-US', {timeZone: dstTz, hour12: false}); var dstDate = new Date(dstStr); // 时差(小时) var diffHours = Math.round((actualUtc - new Date(fakeUtc).getTime()) / 3600000); return { utc: actualUtc, dst: dstDate, diffHours: diffHours }; } function fmtDate(d) { var y = d.getFullYear(); var m = String(d.getMonth() + 1).padStart(2, '0'); var dd = String(d.getDate()).padStart(2, '0'); var h = String(d.getHours()).padStart(2, '0'); var mi = String(d.getMinutes()).padStart(2, '0'); return y + '-' + m + '-' + dd + ' ' + h + ':' + mi; } var errorMsg = document.getElementById('error-msg'); var resultArea = document.getElementById('result-area'); var btnMain = document.getElementById('btn-main'); document.getElementById('f').addEventListener('submit', function(e) { e.preventDefault(); errorMsg.textContent = ''; btnMain.disabled = true; try { var dt = document.getElementById('dt').value; if (!dt) { errorMsg.textContent = '请选择日期时间'; return; } var src = document.getElementById('src-tz').value; var dst = document.getElementById('dst-tz').value; var r = convert(dt, src, dst); resultArea.classList.add('show'); var offsetTxt = r.diffHours === 0 ? '同时区' : (r.diffHours > 0 ? '目标比源快 ' + r.diffHours + ' 小时' : '目标比源慢 ' + (-r.diffHours) + ' 小时'); document.getElementById('result-meta').textContent = '转换结果 · ' + offsetTxt; var srcLabel = TIMEZONES.filter(function(t){return t.tz===src;})[0].name; var dstLabel = TIMEZONES.filter(function(t){return t.tz===dst;})[0].name; var html = '
源时区 · ' + srcLabel + '
' + dt.replace('T',' ') + '
' + '
目标时区 · ' + dstLabel + '
' + fmtDate(r.dst) + '
' + '
UTC 时间: ' + new Date(r.utc).toISOString().replace('T',' ').substring(0,16) + '
'; document.getElementById('result-content').innerHTML = html; } catch (err) { errorMsg.textContent = '错误: ' + err.message; } finally { btnMain.disabled = false; } }); document.getElementById('btn-now').addEventListener('click', function() { var now = new Date(); var y = now.getFullYear(); var m = String(now.getMonth() + 1).padStart(2, '0'); var d = String(now.getDate()).padStart(2, '0'); var h = String(now.getHours()).padStart(2, '0'); var mi = String(now.getMinutes()).padStart(2, '0'); document.getElementById('dt').value = y + '-' + m + '-' + d + 'T' + h + ':' + mi; document.getElementById('f').dispatchEvent(new Event('submit', {bubbles: true, cancelable: true})); }); fillSelects(); // 默认填当前时间 document.getElementById('btn-now').click(); })();
clawam tools

clawam.com · Agent JSON API · built by Daoark

Navegação

Инструменты Документы Daoark

Machine Readable

sitemap.xml robots.txt

苏ICP备2025187298号-28 · clawam.com · built by Daoark