Help
RSS
API
Feed
Maltego
Contact
Domain > developer.batsdk.com
×
Welcome!
Right click nodes and scroll the mouse to navigate the graph.
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2025-11-20
43.159.98.18
(
ClassC
)
Port 80
HTTP/1.1 200 OKServer: openrestyContent-Type: text/html; charsetUTF-8Vary: Accept-EncodingX-Powered-By: PHP/8.4.6Set-Cookie: csrf_cookie_name531512a7b229af916f562e5573fa47bc; expiresThu, 20 Nov 2025 15:19:26 GMT; Max-Age7200; path/; HttpOnly; SameSiteLaxStrict-Transport-Security: max-age31536000Cache-Control: no-cache, no-store, max-age0Transfer-Encoding: chunkedConnection: keep-aliveDate: Thu, 20 Nov 2025 13:19:25 GMTEO-LOG-UUID: 6542756169961642041EO-Cache-Status: MISS !DOCTYPE html>html langen>head> meta charsetUTF-8> meta http-equivcontent-type contenttext/html; charsetUTF-8> title>Unix Timestamp Converter Online - Unix Epoch/title> meta namedescription contentMultiple unix timestamp converter and datetime converter online, supports timestamps in seconds, milliseconds, and datetime in UTC, in local timezone> meta namekeywords contentmultiple converter, unix timestamp, epoch time, datetime, timestamp, converter /> meta nameviewport contentwidthdevice-width, initial-scale1.0, minimum-scale1.0, maximum-scale1.0, user-scalableno> meta nameauthor contentunixepoch.net> meta namegenerator contentunixepoch.net> meta namemsvalidate.01 content6038BA747A665B5B349A47E01B2518A9 /> link relshortcut icon typeimage/x-icon href/favicon.ico> link relcanonical hrefhttps://unixepoch.net/en> !-- Alternate Language Links (动态注入) --> link relalternate hreflangen hrefhttps://unixepoch.net/en />link relalternate hreflangzh hrefhttps://unixepoch.net/zh />link relalternate hreflanghi hrefhttps://unixepoch.net/hi />link relalternate hreflanges hrefhttps://unixepoch.net/es />link relalternate hreflangar hrefhttps://unixepoch.net/ar />link relalternate hreflangru hrefhttps://unixepoch.net/ru />link relalternate hreflangpt hrefhttps://unixepoch.net/pt />link relalternate hreflangfr hrefhttps://unixepoch.net/fr />link relalternate hreflangit hrefhttps://unixepoch.net/it />link relalternate hreflangja hrefhttps://unixepoch.net/ja />link relalternate hreflangms hrefhttps://unixepoch.net/ms />link relalternate hreflangde hrefhttps://unixepoch.net/de />link relalternate hreflangnl hrefhttps://unixepoch.net/nl />link relalternate hreflangnb hrefhttps://unixepoch.net/nb />link relalternate hreflangda hrefhttps://unixepoch.net/da />link relalternate hreflangvi hrefhttps://unixepoch.net/vi />link relalternate hreflangx-default hrefhttps://unixepoch.net/ /> !-- 第三方CSS --> link relstylesheet hrefhttps://cdnjs.cloudflare.com/ajax/libs/layui/2.9.21/css/layui.min.css integritysha512-kW6RZtTRD9zu/RdHOJO/PZE8efgEG+I090ZlgVH6pJ5yXJbz63uTPXvYe/C4GDqtOvu0SyGIpq9cJdUE24oV5g crossoriginanonymous referrerpolicyno-referrer /> link relstylesheet hrefhttps://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css integritysha512-DTOQO9RWCH3ppGqcWaEA1BIZOC6xxalwEsw9c2QQeAIftl+Vegovlnee1c9QX4TctnWMn13TZye+giMm8e2LwA crossoriginanonymous referrerpolicyno-referrer /> !-- 下拉菜单修复样式 --> link rel\stylesheet\ href\/dropdown-fix.css\> !-- 现代化样式系统 --> style> /* CSS 变量定义 - 温暖淡雅风格 */ :root { /* 主色调 - 温暖的橙红色系 */ --primary-color: #ff6b4a; --primary-hover: #ff5722; --primary-light: rgba(255, 107, 74, 0.08); --primary-ultra-light: rgba(255, 107, 74, 0.04); --secondary-color: #4fc3f7; --secondary-hover: #29b6f6; /* 中性色 - 温暖柔和 */ --white: #ffffff; --light-gray: #fafbfc; --medium-gray: #e8eaed; --dark-gray: #5f6368; --text-color: #202124; --text-secondary: #5f6368; --border-color: #e8eaed; --background-color: #ffffff; /* 功能色 - 温暖色调 */ --success-color: #4caf50; --warning-color: #ff9800; --danger-color: #ff5722; --info-color: #2196f3; /* 阴影 - 柔和自然 */ --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.04); --shadow-md: 0 4px 16px rgba(0, 0, 0, 0.06); --shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.08); --shadow-xl: 0 16px 48px rgba(0, 0, 0, 0.10); /* 边框圆角 - iLovePDF风格 */ --radius-sm: 8px; --radius-md: 12px; --radius-lg: 16px; --radius-xl: 24px; /* 字体 */ --font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif; --font-mono: SF Mono, Monaco, Cascadia Code, Roboto Mono, Consolas, Courier New, monospace; } /* 全局样式重置 */ * { margin: 0; padding: 0; box-sizing: border-box; } html { -webkit-text-size-adjust: 100%; font-feature-settings: normal; scroll-behavior: smooth; } body { font-family: var(--font-family); color: var(--text-color); line-height: 1.6; background-color: var(--background-color); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } code, kbd, pre, samp { font-family: var(--font-mono); } a { color: var(--primary-color); text-decoration: none; transition: color 0.2s ease; } a:hover { color: var(--primary-hover); } .margin-top-10px { margin-top: 10px; } .margin-top-20px { margin-top: 20px; } .margin-bottom-10px { margin-bottom: 10px; } .margin-bottom-20px { margin-bottom: 20px; } /* 现代化导航条 - 紧凑优化设计 */ .header { background: var(--white); padding: 12px 20px; box-shadow: var(--shadow-md); display: flex; justify-content: space-between; align-items: center; position: sticky; top: 0; z-index: 1000; /* 提高header的z-index */ border-bottom: 1px solid var(--border-color); backdrop-filter: blur(20px) saturate(180%); background-color: rgba(255, 255, 255, 0.95); overflow: visible; /* 确保header不会裁剪下拉菜单 */ } .header .nav-title { font-size: 28px; font-weight: 800; background: linear-gradient(135deg, var(--primary-color), #ff8a65); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; flex-shrink: 0; margin-right: 16px; display: flex; align-items: center; gap: 0; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); cursor: pointer; line-height: 1; } .header .nav-title:hover { transform: scale(1.05); filter: brightness(1.1); } /* UnixEpoch 时钟表盘Logo设计 - 精工小尺寸 */ .header .nav-title::before { content: ; width: 28px; height: 28px; background: linear-gradient(135deg, #ff6b4a 0%, #4fc3f7 100%); border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; position: relative; box-shadow: 0 3px 10px rgba(255, 107, 74, 0.3); margin-right: 6px; border: 2px solid rgba(255, 255, 255, 0.9); vertical-align: middle; } /* 时钟刻度 - 调整尺寸 */ .header .nav-title::after { content: ; position: absolute; left: 4px; width: 20px; height: 20px; border: 1.5px solid rgba(255, 255, 255, 0.4); border-radius: 50%; background: radial-gradient(circle at center, rgba(255,255,255,0.8) 0.8px, transparent 0.8px), conic-gradient(from 0deg, transparent 85deg, rgba(255,255,255,0.6) 90deg, transparent 95deg, transparent 175deg, rgba(255,255,255,0.6) 180deg, transparent 185deg, transparent 265deg, rgba(255,255,255,0.6) 270deg, transparent 275deg); } /* 动态指针 */ .header .nav-title { position: relative; } .header .nav-title:before { z-index: 1; } /* 时针 */ .header .nav-title:after { z-index: 2; } /* 分针动画 */ .header .nav-title::before { animation: clockTick 60s linear infinite; } /* 中心圆点 */ .header .nav-title::after::before { content: ; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 3px; height: 3px; background: white; border-radius: 50%; z-index: 3; } @keyframes clockTick { 0% { box-shadow: 0 3px 10px rgba(255, 107, 74, 0.3), inset 0 -6px 0 -4px rgba(255, 255, 255, 0.8); } 25% { box-shadow: 0 3px 10px rgba(255, 107, 74, 0.3), inset 6px 0 0 -4px rgba(255, 255, 255, 0.8); } 50% { box-shadow: 0 3px 10px rgba(255, 107, 74, 0.3), inset 0 6px 0 -4px rgba(255, 255, 255, 0.8); } 75% { box-shadow: 0 3px 10px rgba(255, 107, 74, 0.3), inset -6px 0 0 -4px rgba(255, 255, 255, 0.8); } 100% { box-shadow: 0 3px 10px rgba(255, 107, 74, 0.3), inset 0 -6px 0 -4px rgba(255, 255, 255, 0.8); } } .header .nav-title:hover::before { animation-duration: 2s; box-shadow: 0 4px 16px rgba(255, 107, 74, 0.5); } .header .nav-links-container { flex: 1; margin-right: 12px; position: relative; height: auto; /* 高度自适应内容 */ overflow: visible; /* 完全可见,不裁剪下拉菜单 */ /* 移除所有overflow和滚动相关设置,让新导航条自己处理滚动 */ } /* 移除滚动条样式,新导航条自己处理 */ /* 移除滚动指示器,新导航条自己处理滚动 */ .header .nav-links { display: flex; white-space: nowrap; padding: 4px 0; gap: 4px; } /* 导航分类样式 */ .nav-category { position: relative; display: inline-block; z-index: 1; /* 确保分类容器有合适的层级 */ } .nav-category > a { padding: 10px 16px; color: var(--text-secondary); text-decoration: none; border-radius: var(--radius-sm); font-weight: 500; font-size: 14px; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); position: relative; white-space: nowrap; display: flex; align-items: center; gap: 6px; } .nav-category > a::after { content: \25BC; font-size: 10px; transition: transform 0.3s ease; opacity: 0.6; } .nav-category:hover > a::after { transform: rotate(180deg); } .header .nav-links a { padding: 10px 16px; color: var(--text-secondary); text-decoration: none; border-radius: var(--radius-sm); font-weight: 500; font-size: 14px; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); position: relative; white-space: nowrap; } /* 下拉菜单样式 */ .dropdown-menu { position: absolute; top: 100%; left: 0; background: var(--white); border-radius: var(--radius-md); box-shadow: var(--shadow-lg); padding: 8px 0; min-width: 200px; opacity: 0; visibility: hidden; transform: translateY(-10px); transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); border: 1px solid var(--border-color); z-index: 9999; /* 提高z-index确保在最顶层 */ pointer-events: none; /* 隐藏时不响应鼠标事件 */ } .nav-category:hover .dropdown-menu { opacity: 1; visibility: visible; transform: translateY(0); pointer-events: auto; /* 显示时恢复鼠标事件 */ } .dropdown-menu a { display: block; padding: 12px 20px; color: var(--text-color); text-decoration: none; font-size: 14px; font-weight: 400; transition: all 0.2s ease; border-radius: 0; } .dropdown-menu a:hover { background-color: var(--primary-ultra-light); color: var(--primary-color); transform: none; box-shadow: none; } .dropdown-menu a.active { background: linear-gradient(135deg, var(--primary-color), var(--primary-hover)); color: var(--white); font-weight: 600; } .header .nav-links a:hover { background-color: var(--primary-ultra-light); color: var(--primary-color); transform: translateY(-2px); box-shadow: var(--shadow-sm); } .header .nav-links a.active { background: linear-gradient(135deg, var(--primary-color), var(--primary-hover)); color: var(--white); font-weight: 600; box-shadow: var(--shadow-md); transform: translateY(-1px); } .header .nav-links a.active::after { content: ; position: absolute; bottom: -12px; left: 50%; transform: translateX(-50%); width: 8px; height: 8px; background: linear-gradient(135deg, var(--primary-color), var(--primary-hover)); border-radius: 50%; box-shadow: 0 2px 8px rgba(255, 107, 74, 0.3); } .header .language-select { padding: 10px 36px 10px 32px; border: 2px solid transparent; border-radius: var(--radius-md); background: linear-gradient(135deg, var(--light-gray, #fafbfc), var(--white)); color: var(--text-color); font-size: 13px; font-weight: 600; width: 100%; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); cursor: pointer; appearance: none; background-image: url(data:image/svg+xml,%3csvg xmlnshttp://www.w3.org/2000/svg fillnone viewBox0 0 20 20%3e%3cpath stroke%23ff6b4a stroke-linecapround stroke-linejoinround stroke-width2 dm6 8 4 4 4-4/%3e%3c/svg%3e), linear-gradient(135deg, var(--light-gray, #fafbfc), var(--white)); background-position: right 10px center, 0 0; background-repeat: no-repeat, no-repeat; background-size: 16px, 100%; box-shadow: var(--shadow-sm); position: relative; } .header .language-select:hover { border-color: var(--primary-color); box-shadow: var(--shadow-md); transform: translateY(-2px); background: linear-gradient(135deg, var(--white), var(--light-gray, #fafbfc)); } .header .language-select:focus { outline: none; border-color: var(--primary-color); box-shadow: 0 0 0 4px rgba(255, 107, 74, 0.15); transform: translateY(-1px); } .header .language-select::before { content: 🌐; position: absolute; left: 10px; top: 50%; transform: translateY(-50%); font-size: 14px; opacity: 0.7; } /* 语言选择区域 */ .header .nav-lang { width: 110px; flex-shrink: 0; text-align: left; position: relative; z-index: 10; } .header .lang-form { width: 100%; display: inline-block; } /* 汉堡菜单按钮 */ .menu-toggle { display: none; cursor: pointer; font-size: 24px; color: #89216b; } /* 侧边栏导航 */ .mobile-sidebar { position: fixed; top: 0; left: -250px; width: 250px; height: 100%; background-color: #f8f9fa; z-index: 1000; transition: left 0.3s ease; box-shadow: 2px 0 5px rgba(0,0,0,0.1); overflow-y: auto; padding: 20px; } .mobile-sidebar.active { left: 0; } .sidebar-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; padding-bottom: 10px; border-bottom: 1px solid #ddd; } .sidebar-header h3 { color: #89216b; margin: 0; } .close-sidebar { font-size: 24px; cursor: pointer; color: #89216b; } .sidebar-nav { margin-bottom: 30px; } .sidebar-nav a { display: block; padding: 10px 0; color: #89216b; text-decoration: none; border-bottom: 1px solid #eee; } .sidebar-nav a.active { font-weight: bold; } .sidebar-category { margin-bottom: 20px; } .sidebar-category h4 { margin: 15px 0 10px 0; color: var(--text-color); font-size: 14px; font-weight: 600; display: flex; align-items: center; gap: 8px; padding-bottom: 8px; border-bottom: 2px solid var(--primary-color); } .sidebar-category h4 i { color: var(--primary-color); font-size: 16px; } .sidebar-category a { margin-left: 20px; font-size: 14px; border-bottom: 1px solid #f0f0f0; } .sidebar-lang { margin-top: 20px; } .sidebar-lang h4 { margin-bottom: 10px; color: #666; } /* 遮罩层 */ .sidebar-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0,0,0,0.5); z-index: 999; display: none; } /* 现代化主区域布局 */ .main-container { max-width: 1200px; margin: 0 auto; padding: 32px 24px; display: flex; gap: 32px; min-height: calc(100vh - 200px); } .left-panel { flex: 1; min-width: 0; /* 防止flex子项溢出 */ } .right-panel { width: 360px; /* flex-shrink: 0; */ } /* 工具卡片基础样式 */ .tool-card { background: var(--white); border-radius: var(--radius-lg); box-shadow: var(--shadow-md); padding: 32px; margin-bottom: 32px; border: 1px solid var(--border-color); transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); position: relative; overflow: hidden; } .tool-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-lg); border-color: var(--primary-color); } .tool-card::before { content: ; position: absolute; top: 0; left: 0; right: 0; height: 4px; background: linear-gradient(90deg, var(--primary-color), var(--secondary-color)); opacity: 0; transition: opacity 0.3s ease; } .tool-card:hover::before { opacity: 1; } /* 响应式适配 */ @media (max-width: 768px) { .main-container { flex-direction: column; } .left-panel { width: 100%; } .right-panel { width: 100%; } .header .nav-links-container, .header .nav-lang { display: none; } .menu-toggle { display: block; } } \n /* 额外的下拉菜单修复样式 */\n .nav-category:hover .dropdown-menu {\n box-shadow: 0 10px 25px rgba(0, 0, 0, 0.15), 0 6px 12px rgba(0, 0, 0, 0.1) !important;\n }\n \n /* 确保下拉菜单在桌面端正确定位 */\n @media (min-width: 769px) {\n .dropdown-menu {\n position: absolute !important;\n z-index: 9999 !important;\n }\n }\n \n /* 移动端下拉菜单优化 */\n @media (max-width: 768px) {\n .nav-category .dropdown-menu {\n position: fixed !important;\n top: 60px !important;\n left: 50% !important;\n transform: translateX(-50%) translateY(-10px) !important;\n width: 90vw;\n max-width: 300px;\n z-index: 10000 !important;\n }\n \n .nav-category:hover .dropdown-menu {\n transform: translateX(-50%) translateY(0) !important;\n }\n }\n /style> !-- 额外的CSS (动态注入) --> style> /* 导航条 */ .header { background: #f8f9fa; padding: 15px 20px; box-shadow: 0 2px 4px rgba(0,0,0,0.1); display: flex; justify-content: space-between; align-items: center; } .header .nav-title { font-size: 24px; font-weight: bold; color: #111827; } .header .nav-links a { margin-left: 20px; color: #111827; text-decoration: none; } .header .language-select { padding: 5px 10px; border: 1px solid #dee2e6; border-radius: 4px; }/style>style> /* 全局样式 */ * { margin: 0; padding: 0; box-sizing: border-box; } html { -webkit-text-size-adjust:100%; font-feature-settings:normal; font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji; } a { color: #007bff; } a:hover { color: #89CFF0; } /* 网站主区域 */ .main-container { display: flex; max-width: 1200px; margin: 20px auto; padding: 0 20px; gap: 20px; } .left-panel { flex: 1; } .right-panel { width: 380px; } /* 响应式适配 */ @media (max-width: 768px) { .main-container { flex-direction: column; margin: 10px auto; padding: 0 15px; } .left-panel { width: 100%; } .right-panel { width: 100%; } .custom-navbar { padding: 15px; } .custom-navbar .nav-links { display: none; } }/style>style> /* 右边栏当前时间模块 */ .current-timestamp-box { position: relative; background: #fff; /* border: 1px solid #e6e6e6; */ border-radius: 6px; padding: 20px; margin-bottom: 20px; box-shadow: 0 2px 5px rgba(0,0,0,0.1); } .current-timestamp-box .info-item-tab-title { font-size: 20px; line-height: 24px; vertical-align: middle; } .current-timestamp-box .info-item-title { font-size: 14px; line-height: 18px; vertical-align: middle; } .current-timestamp-box .copy-btn { position: absolute; right: 5px; top: 0px; background-color: #89216b; } .current-timestamp-box .info-item { font-size: 16px; margin: 10px 20px 10px 0px; } .current-timestamp-box .info-item span { font-weight: bold; font-size: 18px; } .right-panel .site-card-box { border-radius: 6px; padding: 20px; margin-bottom: 20px; box-shadow: 0 2px 5px rgba(0,0,0,0.1); } /* 右边栏 */ .right-panel .layui-card { margin-bottom: 15px; } .right-panel .layui-card .card-item-pointer { cursor: pointer; } .right-panel .layui-card .card-item-pointer:hover { background-color: #f5f5f5; } .right-panel .doc-list { padding: 0 15px 15px; } .right-panel .doc-list li { margin: 10px 0; list-style: none; cursor: pointer; } .right-panel .doc-list li span { color: #999; margin-right: 5px; }/style>style> .layui-footer { text-align: center; padding: 20px; color: #999; border-top: 1px solid #e6e6e6; } .layui-footer a { margin-right: 10px; }/style>style>/* 舒适的配色系统 - 柔和色调 */:root { /* 主色调 - 温和的蓝绿色 */ --primary-color: #4a90a4; --primary-hover: #357a8a; --primary-light: rgba(74, 144, 164, 0.1); /* 辅助颜色 */ --success-color: #52c196; --success-light: rgba(82, 193, 150, 0.1); --success-hover: #45a085; /* 中性色调 */ --background-color: #fafbfc; --white: #ffffff; --text-color: #2c3e50; --dark-gray: #5a6c7d; --muted-text: #7f8c8d; --border-color: #e1e8ed; --light-gray: #f8f9fa; /* 警告和信息颜色 */ --warning-color: #f39c12; --warning-light: rgba(243, 156, 18, 0.1); --info-color: #3498db; --info-light: rgba(52, 152, 219, 0.1); /* 边框半径 */ --radius-sm: 6px; --radius-md: 10px; --radius-lg: 14px; --radius-xl: 18px; /* 阴影系统 */ --shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.04); --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.08); --shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.12); --shadow-xl: 0 12px 32px rgba(0, 0, 0, 0.16); /* 字体 */ --font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Noto Sans, sans-serif;}/* 现代化时间戳转换页面样式 - 舒适风格 */.timestamp-date-page { min-height: 100vh; background: var(--background-color); padding: 0;}/* 极简紧凑tab导航栏 */.features-overview { background: rgba(255, 255, 255, 0.7); border: 1px solid rgba(0, 0, 0, 0.06); border-radius: 8px; padding: 8px; margin-bottom: 16px; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05); backdrop-filter: blur(5px);}/* 移除装饰性背景 *//* 隐藏标题区域 */.overview-header { display: none;}.features-grid { display: flex; gap: 4px; margin-bottom: 0;}.feature-card { flex: 1; background: rgba(255, 255, 255, 0.8); border: 1px solid rgba(0, 0, 0, 0.08); border-radius: 6px; padding: 8px 12px; cursor: pointer; transition: all 0.2s ease; position: relative; text-align: center; font-size: 0.85rem;}.feature-card:hover { background: var(--white); border-color: var(--primary-color); transform: translateY(-1px); box-shadow: 0 2px 8px rgba(74, 144, 164, 0.15);}.feature-icon { width: 18px; height: 18px; display: inline-flex; align-items: center; justify-content: center; margin-right: 6px; font-size: 12px; color: var(--primary-color); transition: all 0.2s ease;}.feature-icon.single { color: var(--success-color);}.feature-icon.batch { color: var(--warning-color);}.feature-card:hover .feature-icon { transform: scale(1.1);}/* 移除装饰性指示器 */.feature-title { font-size: 0.85rem; font-weight: 500; margin: 0; color: var(--text-color); display: inline;}/* 隐藏描述 */.feature-desc { display: none;}/* 隐藏徽章 */.feature-badge { display: none;}/* 隐藏导航提示 */.quick-nav-hint { display: none;}.quick-nav-hint i { font-size: 16px; color: var(--primary-color); animation: bounce 2s infinite;}.quick-nav-hint span { font-size: 0.8rem; color: var(--muted-text);}@keyframes bounce { 0%, 20%, 50%, 80%, 100% { transform: translateY(0); } 40% { transform: translateY(-6px); } 60% { transform: translateY(-3px); }}/* 工具间导航样式 */.tools-navigation { display: flex; justify-content: center; margin: 32px 0;}.nav-btn { background: linear-gradient(135deg, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.8)); border: 2px solid var(--primary-color); border-radius: var(--radius-lg); padding: 20px 32px; cursor: pointer; transition: all 0.3s ease; display: flex; flex-direction: column; align-items: center; gap: 8px; min-width: 200px; text-align: center; box-shadow: var(--shadow-md); position: relative; overflow: hidden;}.nav-btn::before { content: ; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(74, 144, 164, 0.1), transparent); transition: left 0.5s ease;}.nav-btn:hover::before { left: 100%;}.nav-btn:hover { background: var(--primary-color); color: var(--white); transform: translateY(-2px); box-shadow: var(--shadow-lg);}.nav-btn i { font-size: 20px; color: var(--primary-color); transition: all 0.3s ease;}.nav-btn:hover i { color: var(--white); transform: scale(1.1);}.nav-btn span { font-size: 1rem; font-weight: 600; color: var(--text-color); transition: all 0.3s ease;}.nav-btn:hover span { color: var(--white);}.nav-hint { font-size: 0.875rem; color: var(--muted-text); transition: all 0.3s ease;}.nav-btn:hover .nav-hint { color: rgba(255, 255, 255, 0.8);}/* 滚动进度指示器样式 */.scroll-progress-indicator { position: fixed; top: 50%; right: 20px; transform: translateY(-50%); z-index: 1000; background: var(--white); border-radius: var(--radius-lg); box-shadow: var(--shadow-lg); padding: 8px; border: 1px solid var(--border-color); opacity: 0.9; transition: all 0.3s ease;}.scroll-progress-indicator:hover { opacity: 1; transform: translateY(-50%) scale(1.05);}.progress-bar { width: 0%; height: 3px; background: linear-gradient(90deg, var(--success-color), var(--primary-color)); border-radius: 2px; transition: width 0.3s ease; margin-bottom: 8px;}.progress-sections { display: flex; flex-direction: column; gap: 6px;}.section-indicator { width: 32px; height: 32px; border-radius: 50%; background: var(--light-gray); color: var(--muted-text); display: flex; align-items: center; justify-content: center; font-size: 0.85rem; font-weight: 600; cursor: pointer; transition: all 0.3s ease; border: 2px solid transparent;}.section-indicator:hover { background: var(--primary-light); color: var(--primary-color); border-color: var(--primary-color); transform: scale(1.1);}.section-indicator.active { background: var(--primary-color); color: var(--white); box-shadow: 0 4px 12px rgba(74, 144, 164, 0.3);}/* 键盘快捷键提示样式 */.keyboard-shortcut-hint { position: fixed; top: 100px; right: 20px; z-index: 1100; background: var(--white); border-radius: var(--radius-lg); box-shadow: var(--shadow-xl); padding: 0; border: 1px solid var(--border-color); max-width: 280px; animation: slideInRight 0.5s ease-out;}.hint-content { padding: 20px;}.hint-content h4 { margin: 0 0 12px; color: var(--text-color); font-size: 1rem;}.hint-content p { margin: 8px 0; font-size: 0.9rem; color: var(--dark-gray); display: flex; align-items: center; gap: 8px;}.hint-content kbd { background: var(--light-gray); border: 1px solid var(--border-color); border-radius: 4px; padding: 2px 8px; font-size: 0.8rem; font-family: monospace; color: var(--text-color); min-width: 60px; text-align: center;}.hint-content button { background: var(--primary-color); color: var(--white); border: none; border-radius: var(--radius-md); padding: 8px 16px; font-size: 0.85rem; cursor: pointer; transition: all 0.3s ease; margin-top: 12px; width: 100%;}.hint-content button:hover { background: var(--primary-hover); transform: translateY(-1px);}@keyframes slideInRight { from { transform: translateX(100%); opacity: 0; } to { transform: translateX(0); opacity: 1; }}/* 焦点增强样式 */.timestamp-tool.focus-highlight { box-shadow: 0 0 0 3px rgba(74, 144, 164, 0.3) !important;}/* 工具卡片设计 - iLovePDF风格 */.timestamp-tool { background: rgba(255, 255, 255, 0.8); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); margin-bottom: 20px; overflow: hidden; border: 1px solid rgba(0, 0, 0, 0.04); transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);}.timestamp-tool:hover { box-shadow: var(--shadow-lg); transform: translateY(-4px); border-color: rgba(74, 144, 164, 0.3);}.tool-header { background: rgba(248, 250, 252, 0.6); color: var(--text-color); padding: 12px 20px; border-bottom: 1px solid rgba(0, 0, 0, 0.06); display: flex; flex-direction: row; align-items: center; gap: 12px; text-align: left;}/* 移除装饰性背景 */.tool-header .tool-icon { display: flex; align-items: center; justify-content: center; width: 32px; height: 32px; background: var(--primary-color); color: var(--white); border-radius: 8px; margin: 0; font-size: 16px; transition: all 0.2s ease;}.tool-header .tool-icon:hover { transform: scale(1.05); background: var(--primary-hover);}.tool-header h2 { margin: 0; font-size: 1.125rem; font-weight: 600; color: var(--text-color); letter-spacing: 0;}.tool-content { padding: 20px; display: flex; flex-direction: column; gap: 20px;}/* 现代化表单设计 - iLovePDF风格 */.conversion-section { background: rgba(255, 255, 255, 0.5); border-radius: var(--radius-md); padding: 20px; margin-bottom: 20px; border: 1px solid rgba(0, 0, 0, 0.03);}.section-header { display: flex; align-items: center; gap: 12px; margin-bottom: 20px; padding-bottom: 12px; border-bottom: 2px solid var(--primary-light);}.section-header .section-icon { display: flex; align-items: center; justify-content: center; width: 32px; height: 32px; background: var(--primary-color); color: var(--white); border-radius: 8px; font-size: 16px;}.section-header h3 { margin: 0; font-size: 1.125rem; font-weight: 600; color: var(--text-color);}.form-group { display: flex; flex-direction: column; gap: 6px; margin-bottom: 16px;}.form-label { font-size: 0.875rem; font-weight: 500; color: var(--dark-gray); margin-bottom: 4px;}.modern-input,.modern-textarea,.modern-select { width: 100%; padding: 12px 16px; border: 2px solid var(--border-color); border-radius: var(--radius-md); font-size: 1rem; background: var(--white); transition: all 0.3s ease; font-family: Inter, -apple-system, BlinkMacSystemFont, sans-serif;}.modern-input:focus,.modern-textarea:focus,.modern-select:focus { outline: none; border-color: var(--primary-color); box-shadow: 0 0 0 3px var(--primary-light); transform: translateY(-1px);}.modern-input:hover,.modern-textarea:hover,.modern-select:hover { border-color: var(--primary-color);}.modern-textarea { min-height: 120px; resize: vertical; line-height: 1.5;}.convert-btn { background: linear-gradient(135deg, var(--primary-color) 0%, var(--primary-hover) 100%); color: var(--white) !important; border: none; border-radius: var(--radius-lg); padding: 14px 32px; font-size: 1rem; font-weight: 600; cursor: pointer; transition: all 0.3s ease; position: relative; overflow: hidden; text-transform: uppercase; letter-spacing: 0.5px; min-height: 52px;}.convert-btn::before { content: ; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent); transition: left 0.5s ease;}.convert-btn:hover::before { left: 100%;}.convert-btn:hover { transform: translateY(-2px); box-shadow: var(--shadow-lg); background: linear-gradient(135deg, var(--primary-hover) 0%, var(--success-hover) 100%);}.convert-btn:active { transform: translateY(0);}/* 控制面板布局 */.control-panel { display: grid; grid-template-columns: 1fr auto auto; gap: 16px; align-items: center; margin-bottom: 16px;}@media (max-width: 640px) { .control-panel { grid-template-columns: 1fr; gap: 12px; } .control-panel .convert-btn { order: 3; width: 100%; } .control-panel select { order: 1; }}/* 结果显示区域 */.result-display { background: var(--success-light); border: 2px solid var(--success-color); border-radius: var(--radius-lg); padding: 16px; font-family: Monaco, Consolas, monospace; font-size: 1rem; color: var(--text-color); min-height: 52px; display: flex; align-items: center; position: relative;}.result-display.empty { background: var(--light-gray); border-color: var(--border-color); color: var(--muted-text); font-style: italic;}/* 结果输出字段样式 */.result-output { background: var(--success-light) !important; border-color: var(--success-color) !important; color: var(--text-color) !important; font-family: Monaco, Consolas, monospace; font-weight: 600; cursor: text;}.result-output:focus { background: var(--success-light) !important; border-color: var(--success-color) !important; box-shadow: 0 0 0 3px rgba(39, 174, 96, 0.1) !important;}.result-output::placeholder { color: var(--muted-text); font-style: italic; font-family: var(--font-family);}/* 结果容器和复制按钮 */.result-container { position: relative; display: flex; align-items: center;}.result-container .result-output { flex: 1; padding-right: 50px;}.copy-result-btn { position: absolute; right: 12px; top: 50%; transform: translateY(-50%); background: transparent; border: none; color: var(--success-color); font-size: 16px; cursor: pointer; padding: 8px; border-radius: 4px; transition: all 0.3s ease; opacity: 0; pointer-events: none;}.result-container:hover .copy-result-btn,.result-container .result-output:not(:placeholder-shown) ~ .copy-result-btn { opacity: 1; pointer-events: all;}.copy-result-btn:hover { background: var(--success-light); color: var(--success-color); transform: translateY(-50%) scale(1.1);}/* 现代化表格设计 */.modern-table { width: 100%; border-collapse: collapse; background: var(--white); border-radius: var(--radius-lg); overflow: hidden; box-shadow: var(--shadow-sm); margin-top: 20px;}.modern-table thead { background: linear-gradient(135deg, var(--primary-color) 0%, var(--primary-hover) 100%); color: var(--white);}.modern-table th,.modern-table td { padding: 16px 20px; text-align: left; border-bottom: 1px solid rgba(0, 0, 0, 0.05);}.modern-table th { font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; font-size: 0.875rem;}.modern-table tbody tr { transition: background-color 0.2s ease;}.modern-table tbody tr:hover { background: var(--light-gray);}.modern-table tbody tr:last-child td { border-bottom: none;}/* 信息卡片设计 */.info-card { background: var(--white); border-radius: var(--radius-xl); padding: 32px; margin-bottom: 24px; box-shadow: var(--shadow-md); border: 1px solid rgba(0, 0, 0, 0.05); transition: all 0.3s ease;}.info-card:hover { box-shadow: var(--shadow-lg); transform: translateY(-2px);}.info-card h2,.info-card h3 { color: var(--text-color); margin-bottom: 16px;}.info-card h2 { font-size: 1.5rem; font-weight: 700; border-bottom: 3px solid var(--primary-color); padding-bottom: 12px; display: inline-block;}.info-card h3 { font-size: 1.25rem; font-weight: 600; position: relative; padding-left: 20px;}.info-card h3::before { content: ; position: absolute; left: 0; top: 50%; transform: translateY(-50%); width: 4px; height: 20px; background: var(--primary-color); border-radius: 2px;}.info-card p { line-height: 1.7; color: var(--text-color); font-size: 1rem;}/* FAQ样式优化 */.faq-item { background: linear-gradient(145deg, #f8f9fa 0%, #ffffff 100%); border-radius: var(--radius-lg); padding: 24px; margin-bottom: 16px; border: 1px solid rgba(0, 0, 0, 0.05); transition: all 0.3s ease; position: relative; overflow: hidden;}.faq-item::before { content: ; position: absolute; left: 0; top: 0; width: 4px; height: 100%; background: var(--primary-color); transform: scaleY(0); transition: transform 0.3s ease;}.faq-item:hover { box-shadow: var(--shadow-md); transform: translateY(-2px);}.faq-item:hover::before { transform: scaleY(1);}.faq-question { font-size: 1.125rem; font-weight: 600; color: var(--text-color); margin-bottom: 12px; position: relative; padding-left: 32px;}.faq-question::before { content: \f059; font-family: Font Awesome 5 Free; font-weight: 900; position: absolute; left: 0; top: 0; color: var(--primary-color); font-size: 20px;}.faq-answer { color: var(--dark-gray); line-height: 1.6; padding-left: 32px; position: relative;}.faq-answer::before { content: \f0a4; font-family: Font Awesome 5 Free; font-weight: 900; position: absolute; left: 0; top: 2px; color: var(--success-color); font-size: 16px;}/* 响应式设计优化 */@media (max-width: 1024px) { .control-panel { grid-template-columns: 1fr; gap: 12px; } .control-panel .convert-btn { order: 3; } .tool-content { padding: 24px; } .result-container .result-output { padding-right: 45px; } .copy-result-btn { right: 8px; font-size: 14px; padding: 6px; }}@media (max-width: 768px) { .tool-content { padding: 20px; gap: 20px; } .tool-header { padding: 10px 16px; gap: 10px; } .tool-header .tool-icon { width: 28px; height: 28px; font-size: 14px; } .tool-header h2 { font-size: 1rem; } .conversion-section { padding: 20px; } .control-panel { grid-template-columns: 1fr; gap: 12px; } .convert-btn { width: 100%; padding: 16px; min-height: 56px; } .info-card { padding: 24px; } .info-card h2 { font-size: 1.25rem; } .modern-table th, .modern-table td { padding: 12px 16px; font-size: 0.875rem; }}@media (max-width: 480px) { .tool-content { padding: 16px; } .tool-header { padding: 8px 12px; gap: 8px; } .tool-header .tool-icon { width: 24px; height: 24px; font-size: 12px; } .tool-header h2 { font-size: 0.95rem; } /* 功能预览区响应式 */ .features-overview { padding: 20px 24px 16px 24px; margin-bottom: 20px; } .main-title { font-size: 1.5rem; } .main-subtitle { font-size: 0.9rem; } .features-grid { grid-template-columns: 1fr; gap: 12px; } .feature-card { padding: 16px 14px; } .feature-icon { width: 44px; height: 44px; font-size: 18px; margin-bottom: 12px; } .feature-title { font-size: 1rem; } .feature-desc { font-size: 0.8rem; } .tools-navigation { margin: 24px 0; } .nav-btn { min-width: 180px; padding: 16px 24px; } /* 移动端滚动指示器优化 */ .scroll-progress-indicator { right: 12px; padding: 6px; } .section-indicator { width: 28px; height: 28px; font-size: 0.8rem; } .keyboard-shortcut-hint { top: 80px; right: 12px; left: 12px; max-width: none; } .conversion-section { padding: 16px; } .info-card { padding: 20px; } .modern-table th, .modern-table td { padding: 8px 12px; font-size: 0.8rem; }}/* 列表和步骤样式 */.step-list { list-style: none; counter-reset: step-counter; margin: 20px 0; padding: 0;}.step-list li { counter-increment: step-counter; position: relative; padding: 16px 24px 16px 60px; margin-bottom: 16px; background: linear-gradient(145deg, #ffffff 0%, #f8f9fa 100%); border-radius: var(--radius-lg); border: 1px solid rgba(0, 0, 0, 0.05); transition: all 0.3s ease; line-height: 1.6; color: var(--text-color);}.step-list li:hover { box-shadow: var(--shadow-md); transform: translateX(4px);}.step-list li::before { content: counter(step-counter); position: absolute; left: 20px; top: 50%; transform: translateY(-50%); width: 32px; height: 32px; background: linear-gradient(135deg, var(--primary-color) 0%, var(--primary-hover) 100%); color: var(--white); border-radius: 50%; display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 0.875rem; box-shadow: 0 2px 8px rgba(74, 144, 164, 0.3);}.bullet-list { list-style: none; margin: 20px 0; padding: 0;}.bullet-list li { position: relative; padding: 12px 24px 12px 40px; margin-bottom: 12px; background: var(--light-gray); border-radius: var(--radius-md); border-left: 4px solid var(--primary-color); transition: all 0.3s ease; line-height: 1.6; color: var(--text-color);}.bullet-list li:hover { background: var(--white); box-shadow: var(--shadow-sm); transform: translateX(4px);}.bullet-list li::before { content: \f138; font-family: Font Awesome 5 Free; font-weight: 900; position: absolute; left: 16px; top: 14px; color: var(--primary-color); font-size: 12px;}/* 链接样式优化 */.info-card a { color: var(--primary-color); text-decoration: none; font-weight: 500; transition: all 0.3s ease; position: relative;}.info-card a:hover { color: var(--primary-hover); text-decoration: none;}.info-card a::after { content: ; position: absolute; bottom: -2px; left: 0; width: 0; height: 2px; background: var(--primary-color); transition: width 0.3s ease;}.info-card a:hover::after { width: 100%;}/* 表格链接特殊处理 */.modern-table a { color: var(--primary-color); text-decoration: none; font-weight: 500; padding: 4px 8px; border-radius: var(--radius-sm); transition: all 0.3s ease; display: inline-block;}.modern-table a:hover { background: var(--primary-light); color: var(--primary-hover); transform: translateY(-1px);}/* 标签和徽章 */.badge { display: inline-flex; align-items: center; padding: 4px 12px; border-radius: 20px; font-size: 0.75rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; margin: 0 4px;}.badge.primary { background: var(--primary-light); color: var(--primary-color);}.badge.success { background: var(--success-light); color: var(--success-color);}.badge.info { background: var(--info-light); color: var(--info-color);}/* 提示和警告框 */.alert { padding: 16px 20px; border-radius: var(--radius-lg); margin: 16px 0; border: 1px solid; position: relative; overflow: hidden;}.alert::before { content: ; position: absolute; left: 0; top: 0; width: 4px; height: 100%;}.alert.info { background: var(--info-light); border-color: var(--info-color); color: var(--info-color);}.alert.info::before { background: var(--info-color);}.alert.success { background: var(--success-light); border-color: var(--success-color); color: var(--success-color);}.alert.success::before { background: var(--success-color);}.alert.warning { background: var(--warning-light); border-color: var(--warning-color); color: var(--warning-color);}.alert.warning::before { background: var(--warning-color);}/* 加载动画 */.loading-overlay { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: rgba(255, 255, 255, 0.95); display: flex; align-items: center; justify-content: center; border-radius: inherit; opacity: 0; visibility: hidden; transition: all 0.3s ease; backdrop-filter: blur(4px);}.loading-overlay.active { opacity: 1; visibility: visible;}.loading-spinner { width: 32px; height: 32px; border: 3px solid var(--light-gray); border-top: 3px solid var(--primary-color); border-radius: 50%; animation: spin 1s linear infinite;}@keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); }}/* 成功动画 */@keyframes checkmark { 0% { stroke-dashoffset: 50; } 100% { stroke-dashoffset: 0; }}.success-checkmark { width: 24px; height: 24px; border-radius: 50%; display: block; stroke-width: 2; stroke: var(--success-color); stroke-miterlimit: 10; margin: 0 auto; animation: checkmark 0.6s ease-out; stroke-dasharray: 50; stroke-dashoffset: 50;}/* 工具提示 */.tooltip { position: relative; display: inline-block;}.tooltip .tooltiptext { visibility: hidden; width: 200px; background: var(--dark-gray); color: var(--white); text-align: center; border-radius: var(--radius-md); padding: 8px 12px; position: absolute; z-index: 1000; bottom: 125%; left: 50%; margin-left: -100px; opacity: 0; transition: opacity 0.3s; font-size: 0.875rem; line-height: 1.4;}.tooltip .tooltiptext::after { content: ; position: absolute; top: 100%; left: 50%; margin-left: -5px; border-width: 5px; border-style: solid; border-color: var(--dark-gray) transparent transparent transparent;}.tooltip:hover .tooltiptext { visibility: visible; opacity: 1;}/* 深色模式支持 */@media (prefers-color-scheme: dark) { .timestamp-date-page { background: #1a202c; } .timestamp-tool, .info-card { background: #2d3748; border-color: #4a5568; } .conversion-section { background: #374151; } .modern-input, .modern-textarea, .modern-select { background: #374151; border-color: #4a5568; color: #e2e8f0; } .modern-table { background: #2d3748; } .modern-table tbody tr:hover { background: #374151; }}/style> !-- 额外的Meta标签 (动态注入) --> !-- Open Graph / Facebook -->meta propertyog:type contentwebsite>meta propertyog:url contenthttps://unixepoch.net/en>meta propertyog:title content | Unix Timestamp Converter Online - Unix Epoch>meta propertyog:description contentMultiple unix timestamp converter and datetime converter online, supports timestamps in seconds, milliseconds, and datetime in UTC, in local timezone>meta propertyog:image contenthttps://unixepoch.net/images/og-image.jpg>!-- Twitter -->meta propertytwitter:card contentsummary_large_image>meta propertytwitter:url contenthttps://unixepoch.net/en>meta propertytwitter:title content | Unix Timestamp Converter Online - Unix Epoch>meta propertytwitter:description contentMultiple unix timestamp converter and datetime converter online, supports timestamps in seconds, milliseconds, and datetime in UTC, in local timezone>meta propertytwitter:image contenthttps://unixepoch.net/images/og-image.jpg> !-- 第三方脚本 --> script srchttps://cdnjs.cloudflare.com/ajax/libs/layui/2.9.21/layui.min.js integritysha512-+3nec9IwGC0wwTDP5fSYrOKci7ZtmIev1Ke49YNClP6u2eZoPN7LGXmxZYRd2YZJ9x9rbrWZ3yScu2PSfzkCmg crossoriginanonymous referrerpolicyno-referrer>/script> script srchttps://cdn.jsdelivr.net/npm/luxon@3.5.0/build/global/luxon.min.js>/script> !-- Google tag (gtag.js) --> script async srchttps://www.googletagmanager.com/gtag/js?idG-Y7NE0372CL>/script> script> window.dataLayer window.dataLayer || ; function gtag(){dataLayer.push(arguments);} gtag(js, new Date()); gtag(config, G-Y7NE0372CL); /script> !-- Google Adsense --> script async srchttps://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?clientca-pub-4770819882098953 crossoriginanonymous>/script> !-- Microsoft Clarity --> script typetext/javascript> (function(c,l,a,r,i,t,y){ caca||function(){(ca.qca.q||).push(arguments)}; tl.createElement(r);t.async1;t.srchttps://www.clarity.ms/tag/+i; yl.getElementsByTagName(r)0;y.parentNode.insertBefore(t,y); })(window, document, clarity, script, san462gyfd); /script> !-- Iubenda Cookie Consent --> script typetext/javascript> var _iub _iub || ; _iub.csConfiguration {siteId:4143686,cookiePolicyId:15343277,lang:en,storage:{useSiteId:true}}; /script> script typetext/javascript srchttps://cs.iubenda.com/autoblocking/4143686.js>/script> script typetext/javascript src//cdn.iubenda.com/cs/gpp/stub.js>/script> script typetext/javascript src//cdn.iubenda.com/cs/iubenda_cs.js charsetUTF-8 async>/script>/head>body> !-- 导航栏 --> header classheader> h2 classnav-title>UnixEpoch/h2> div classmenu-toggle idmenuToggle> i classfas fa-bars>/i> /div> !-- iLovePDF风格的现代导航条 -->div classmodern-nav-container> nav classmodern-nav aria-labelMain navigation> !-- 基础导航项 --> a hrefhttps://unixepoch.net/ classnav-item active> i classfas fa-home>/i> span>Home/span> /a> a hrefhttps://unixepoch.net/blog classnav-item> i classfas fa-blog>/i> span>Blog/span> /a> !-- Timestamp 工具分类 --> div classnav-dropdown> a href# classnav-item dropdown-trigger aria-expandedfalse> i classfas fa-clock>/i> span>Time/span> i classfas fa-chevron-down dropdown-arrow>/i> /a> div classdropdown-panel> div classdropdown-content> a hrefhttps://unixepoch.net/ classdropdown-item active> i classfas fa-exchange-alt>/i> div> span classitem-title>Timestamp Converter/span> span classitem-desc>Convert timestamp to date/span> /div> /a> a hrefhttps://unixepoch.net/timestamp-difference classdropdown-item > i classfas fa-minus>/i> div> span classitem-title>Timestamp Difference/span> span classitem-desc>Calculate time difference/span> /div> /a> a hrefhttps://unixepoch.net/timestamp-arithmetic classdropdown-item > i classfas fa-plus>/i> div> span classitem-title>Timestamp Calculator/span> span classitem-desc>Add/subtract time/span> /div> /a> a hrefhttps://unixepoch.net/countdown-timer classdropdown-item > i classfas fa-hourglass-half>/i> div> span classitem-title>Countdown Timer/span> span classitem-desc>Create custom countdown timers/span> /div> /a> /div> /div> /div> !-- Calculator 计算器分类 --> div classnav-dropdown> a href# classnav-item dropdown-trigger aria-expandedfalse> i classfas fa-calculator>/i> span>Calculator/span> i classfas fa-chevron-down dropdown-arrow>/i> /a> div classdropdown-panel> div classdropdown-content> a hrefhttps://unixepoch.net/age-calculator classdropdown-item > i classfas fa-birthday-cake>/i> div> span classitem-title>Age Calculator/span> span classitem-desc>Calculate exact age/span> /div> /a> a hrefhttps://unixepoch.net/sleep-calculator classdropdown-item > i classfas fa-bed>/i> div> span classitem-title>Sleep Calculator/span> span classitem-desc>Optimize sleep schedule/span> /div> /a> /div> /div> /div> !-- Converter 转换器分类 --> div classnav-dropdown> a href# classnav-item dropdown-trigger aria-expandedfalse> i classfas fa-sync-alt>/i> span>Converter/span> i classfas fa-chevron-down dropdown-arrow>/i> /a> div classdropdown-panel> div classdropdown-content> a hrefhttps://unixepoch.net/timezone-converter classdropdown-item > i classfas fa-globe>/i> div> span classitem-title>Timezone Converter/span> span classitem-desc>Convert between timezones/span> /div> /a> a hrefhttps://unixepoch.net/date-converter classdropdown-item> i classfas fa-calendar-alt>/i> div> span classitem-title>Date Converter/span> span classitem-desc>Convert date formats/span> /div> /a> a hrefhttps://unixepoch.net/epoch-converter classdropdown-item> i classfas fa-stopwatch>/i> div> span classitem-title>Epoch Converter/span> span classitem-desc>Convert epoch time/span> /div> /a> /div> /div> /div> !-- Developer Resources --> a hrefhttps://unixepoch.net/developer-resources classnav-item > i classfas fa-code>/i> span>Developer Resources/span> /a> /nav>/div>style>/* 现代导航条样式 - iLovePDF风格 */.modern-nav-container { display: flex; justify-content: flex-start; /* 改为左对齐,避免内容超出时的布局问题 */ width: 100%; height: 48px; /* 设置固定高度,匹配导航项高度 */ overflow-x: auto !important; /* 强制水平滚动 */ overflow-y: hidden !important; /* 彻底禁止垂直滚动 */ scrollbar-width: none; -ms-overflow-style: none;}.modern-nav-container::-webkit-scrollbar { display: none;}.modern-nav { display: flex; align-items: center; gap: 8px; padding: 0 16px; min-width: max-content; flex-shrink: 0; /* 防止导航项被压缩 */}/* 导航项基础样式 */.nav-item { display: flex; align-items: center; gap: 8px; padding: 12px 16px; border-radius: 8px; color: var(--text-secondary); text-decoration: none; font-size: 14px; font-weight: 500; transition: all 0.2s ease; white-space: nowrap; position: relative;}.nav-item:hover { background-color: var(--primary-ultra-light); color: var(--primary-color); transform: translateY(-1px);}.nav-item.active { background-color: var(--primary-color); color: white; box-shadow: 0 2px 8px rgba(255, 107, 74, 0.3);}.nav-item i { font-size: 16px; width: 16px; text-align: center;}/* 下拉菜单容器 */.nav-dropdown { position: relative;}.dropdown-trigger .dropdown-arrow { font-size: 12px; transition: transform 0.2s ease; margin-left: 4px;}.dropdown-trigger:hover .dropdown-arrow,.nav-dropdown.active .dropdown-arrow { transform: rotate(180deg);}/* 下拉面板 */.dropdown-panel { position: fixed; /* 改为fixed定位,脱离overflow限制 */ background: white; border-radius: 12px; box-shadow: var(--shadow-md); border: 1px solid var(--border-color); opacity: 0; visibility: hidden; transform: translateY(-10px); transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); z-index: 9999; /* 提高z-index */ min-width: 280px; /* 位置将通过JavaScript动态设置 */}.nav-dropdown:hover .dropdown-panel,.nav-dropdown.active .dropdown-panel { opacity: 1; visibility: visible; transform: translateY(0);}.dropdown-content { padding: 8px;}/* 下拉菜单项 */.dropdown-item { display: flex; align-items: center; gap: 12px; padding: 12px 16px; border-radius: 8px; color: var(--text-color); text-decoration: none; transition: all 0.2s ease; margin-bottom: 4px;}.dropdown-item:hover { background-color: var(--primary-ultra-light); color: var(--primary-color); transform: translateX(4px);}.dropdown-item.active { background-color: var(--primary-light); color: var(--primary-color);}.dropdown-item i { font-size: 16px; width: 20px; text-align: center; color: var(--primary-color);}.dropdown-item div { flex: 1;}.item-title { display: block; font-weight: 600; font-size: 14px; line-height: 1.2;}.item-desc { display: block; font-size: 12px; color: var(--text-secondary); margin-top: 2px; line-height: 1.3;}/* 响应式设计 */@media (max-width: 768px) { .modern-nav-container { display: none; /* 移动端隐藏,使用原有的移动端导航 */ }}/* 确保下拉菜单在header中显示 */@media (min-width: 769px) { .header .nav-links-container { overflow: visible !important; }}/style>script>// 现代导航条交互document.addEventListener(DOMContentLoaded, function() { const dropdowns document.querySelectorAll(.nav-dropdown); let activeDropdown null; // 动态设置下拉面板位置 function positionDropdown(dropdown) { const panel dropdown.querySelector(.dropdown-panel); const trigger dropdown.querySelector(.dropdown-trigger); if (panel && trigger) { const triggerRect trigger.getBoundingClientRect(); panel.style.top (triggerRect.bottom + 8) + px; panel.style.left triggerRect.left + px; } } dropdowns.forEach(dropdown > { const trigger dropdown.querySelector(.dropdown-trigger); // 鼠标悬停显示 dropdown.addEventListener(mouseenter, function() { closeAllDropdowns(); this.classList.add(active); trigger.setAttribute(aria-expanded, true); activeDropdown this; // 动态设置下拉面板位置 positionDropdown(this); }); // 鼠标离开隐藏 dropdown.addEventListener(mouseleave, function() { this.classList.remove(active); trigger.setAttribute(aria-expanded, false); activeDropdown null; }); // 点击切换 trigger.addEventListener(click, function(e) { e.preventDefault(); if (dropdown.classList.contains(active)) { dropdown.classList.remove(active); trigger.setAttribute(aria-expanded, false); activeDropdown null; } else { closeAllDropdowns(); dropdown.classList.add(active); trigger.setAttribute(aria-expanded, true); activeDropdown dropdown; // 动态设置下拉面板位置 positionDropdown(dropdown); } }); }); // 点击外部关闭 document.addEventListener(click, function(e) { if (!e.target.closest(.nav-dropdown) && activeDropdown) { closeAllDropdowns(); } }); function closeAllDropdowns() { dropdowns.forEach(dropdown > { dropdown.classList.remove(active); dropdown.querySelector(.dropdown-trigger).setAttribute(aria-expanded, false); }); activeDropdown null; } // ESC键关闭 document.addEventListener(keydown, function(e) { if (e.key Escape && activeDropdown) { closeAllDropdowns(); } });});/script>style>/* 确保只显示新导航条 */@media (min-width: 769px) { .header .nav-links:not(.modern-nav) { display: none !important; }}/style> div classnav-lang> form classlayui-form lang-form idlanguageChangeForm onsubmitreturn false> select classlanguage-select lay-filterlanguageChange> option value/ selected>English/option> option value/zh >中文/option> option value/hi >हिंदी/option> option value/es >español/option> option value/ar >بالعربية/option> option value/ru >Русский язык/option> option value/pt >Português/option> option value/fr >Français/option> option value/it >Italiano/option> option value/ja >日語/option> option value/ms >Melayu/option> option value/de >Deutsch/option> option value/nl >Nederlands/option> option value/nb >Norsk/option> option value/da >Dansk/option> option value/vi >Tiếng Việt/option> /select> /form> /div> /header> !-- 移动端侧边栏 --> div classsidebar-overlay idsidebarOverlay>/div> div classmobile-sidebar idmobileSidebar> div classsidebar-header> h3>UnixEpoch/h3> div classclose-sidebar idcloseSidebar> i classfas fa-times>/i> /div> /div> div classsidebar-nav> a hrefhttps://unixepoch.net/ classactive>Home/a> a hrefhttps://unixepoch.net/blog>Blog/a> !-- Timestamp 工具 --> div classsidebar-category> h4>i classfas fa-clock>/i> Timestamp/h4> a hrefhttps://unixepoch.net/ classactive>Timestamp Converter/a> a hrefhttps://unixepoch.net/timestamp-difference class>Timestamp Difference/a> a hrefhttps://unixepoch.net/timestamp-arithmetic class>Timestamp Calculator/a> /div> !-- Calculator 计算器 --> div classsidebar-category> h4>i classfas fa-calculator>/i> Calculator/h4> a hrefhttps://unixepoch.net/age-calculator class>Age Calculator/a> a hrefhttps://unixepoch.net/sleep-calculator class>Sleep Calculator/a> /div> !-- Converter 转换器 --> div classsidebar-category> h4>i classfas fa-exchange-alt>/i> Converter/h4> a hrefhttps://unixepoch.net/timezone-converter class>Timezone Converter/a> /div> a hrefhttps://unixepoch.net/developer-resources class>Developer Resources/a> /div> div classsidebar-lang> h4>Language/h4> form classlayui-form idmobileLangForm onsubmitreturn false> select classlanguage-select lay-filtermobileLangChange> option value/ selected>English/option> option value/zh >中文/option> option value/hi >हिंदी/option> option value/es >español/option> option value/ar >بالعربية/option> option value/ru >Русский язык/option> option value/pt >Português/option> option value/fr >Français/option> option value/it >Italiano/option> option value/ja >日語/option> option value/ms >Melayu/option> option value/de >Deutsch/option> option value/nl >Nederlands/option> option value/nb >Norsk/option> option value/da >Dansk/option> option value/vi >Tiếng Việt/option> /select> /form> /div> /div> !-- 头部脚本 --> script> layui.use(form, function () { var form layui.form; var $ layui.$; // 语言切换 form.on(select(languageChange), function (data) { var selectedValue data.value; var currentPath window.location.pathname; var newUrl; // 检查当前路径是否包含语言前缀 var langRegex /^\/(?:zh|vi|da|nb|ms|it|pt|es|hi|nl|ru|fr|de|ja|ar)(?:\/|$)/; if (selectedValue /) { // 选择英语,移除语言前缀 if (langRegex.test(currentPath)) { newUrl currentPath.replace(langRegex, /); } else { newUrl currentPath; } } else { // 选择其他语言 var selectedLang selectedValue.replace(/, ); if (langRegex.test(currentPath)) { // 如果当前路径包含语言前缀,则替换语言部分 newUrl currentPath.replace(langRegex, / + selectedLang + /); } else { // 如果当前路径不包含语言前缀,则添加语言前缀 newUrl / + selectedLang + currentPath; } } // 保留查询参数和哈希部分 if (window.location.search) { newUrl + window.location.search; } if (window.location.hash) { newUrl + window.location.hash; } // 跳转到新URL window.location.href newUrl; return false; }); // 移动端语言切换 form.on(select(mobileLangChange), function (data) { var selectedValue data.value; var currentPath window.location.pathname; var newUrl; // 检查当前路径是否包含语言前缀 var langRegex /^\/(?:zh|vi|da|nb|ms|it|pt|es|hi|nl|ru|fr|de|ja|ar)(?:\/|$)/; if (selectedValue /) { // 选择英语,移除语言前缀 if (langRegex.test(currentPath)) { newUrl currentPath.replace(langRegex, /); } else { newUrl currentPath; } } else { // 选择其他语言 var selectedLang selectedValue.replace(/, ); if (langRegex.test(currentPath)) { // 如果当前路径包含语言前缀,则替换语言部分 newUrl currentPath.replace(langRegex, / + selectedLang + /); } else { // 如果当前路径不包含语言前缀,则添加语言前缀 newUrl / + selectedLang + currentPath; } } // 保留查询参数和哈希部分 if (window.location.search) { newUrl + window.location.search; } if (window.location.hash) { newUrl + window.location.hash; } // 跳转到新URL window.location.href newUrl; return false; }); // 导航滚动优化 - 仅在没有现代导航时应用 var $navContainer $(.nav-links-container); // 检查是否存在现代导航 function hasModernNav() { return $(.modern-nav-container).length > 0 && window.innerWidth > 769; } // 检查导航是否需要滚动 function checkNavScroll() { // 如果存在现代导航,跳过旧的滚动逻辑 if (hasModernNav()) { $navContainer.removeClass(scrollable shadow-left shadow-right); return; } var $nav $navContainer.find(.nav-links); var navWidth $nav.width(); var containerWidth $navContainer.width(); if (navWidth > containerWidth) { $navContainer.addClass(scrollable); // 如果内容超出容器而且没有滚动过,添加一个微妙的滚动提示 if (!$navContainer.data(scroll-hint-shown)) { setTimeout(function() { if ($navContainer.scrollLeft() 0) { $navContainer.animate({scrollLeft: 30}, 800, function() { $navContainer.animate({scrollLeft: 0}, 400); }); $navContainer.data(scroll-hint-shown, true); } }, 1000); } } else { $navContainer.removeClass(scrollable); } updateScrollShadows(); } // 更新滚动阴影 function updateScrollShadows() { // 如果存在现代导航,跳过旧的滚动逻辑 if (hasModernNav()) { return; } if (!$navContainer.hasClass(scrollable)) { $navContainer.removeClass(shadow-left shadow-right); return; } var scrollLeft $navContainer.scrollLeft(); var maxScrollLeft $navContainer0.scrollWidth - $navContainer0.clientWidth; // 根据滚动位置显示/隐藏阴影 if (scrollLeft 0) { $navContainer.removeClass(shadow-left).addClass(shadow-right); } else if (scrollLeft > maxScrollLeft - 5) { $navContainer.removeClass(shadow-right).addClass(shadow-left); } else { $navContainer.addClass(shadow-left shadow-right); } } // 初始化并响应窗口大小变化 $(window).on(load resize, checkNavScroll); $navContainer.on(scroll, updateScrollShadows); // 添加触摸滑动支持 var touchStartX 0; var touchCurrentX 0; $navContainer.on(touchstart, function(e) { // 如果存在现代导航,跳过旧的滚动逻辑 if (hasModernNav()) return; touchStartX e.originalEvent.touches0.clientX; }); $navContainer.on(touchmove, function(e) { // 如果存在现代导航,跳过旧的滚动逻辑 if (hasModernNav()) return; if (!$navContainer.hasClass(scrollable)) return; touchCurrentX e.originalEvent.touches0.clientX; var touchDiff touchStartX - touchCurrentX; if (Math.abs(touchDiff) > 5) { // 防止页面在导航滑动时也滚动 e.preventDefault(); } }); // 侧边栏开关 $(#menuToggle).on(click, function() { $(#mobileSidebar).addClass(active); $(#sidebarOverlay).fadeIn(); $(body).css(overflow, hidden); }); $(#closeSidebar, #sidebarOverlay).on(click, function() { $(#mobileSidebar).removeClass(active); $(#sidebarOverlay).fadeOut(); $(body).css(overflow, auto); }); // 点击侧边栏导航链接后关闭侧边栏 $(.sidebar-nav a).not(target_blank).on(click, function() { $(#mobileSidebar).removeClass(active); $(#sidebarOverlay).fadeOut(); $(body).css(overflow, auto); }); // 防止下拉菜单触发器导航 $(.nav-category > a).on(click, function(e) { e.preventDefault(); return false; }); }); /script>/body>/html>!-- 主内容区 -->div classmain-container> main classleft-panel> div classtimestamp-date-page> !-- 功能导航预览区 --> div classfeatures-overview> div classoverview-header> h1 classmain-title>Unix Timestamp Converter Online - Unix Epoch/h1> p classmain-subtitle>Multiple unix timestamp converter and datetime converter online, supports timestamps in seconds, milliseconds, and datetime in UTC, in local timezone/p> /div> div classfeatures-grid> div classfeature-card onclickscrollToElement(single-converter)> div classfeature-icon single> i classfas fa-exchange-alt>/i> /div> span classfeature-title>Unix timestamp converter/span> /div> div classfeature-card onclickscrollToElement(batch-converter)> div classfeature-icon batch> i classfas fa-list>/i> /div> span classfeature-title>Multiple unix timestamp converter/span> /div> /div> /div> !-- 单个转换工具 --> div classtimestamp-tool idsingle-converter> div classtool-header> div classtool-icon> i classfas fa-exchange-alt>/i> /div> h2>Unix timestamp converter/h2> /div> div classtool-content> !-- 时间戳转日期区域 --> div classconversion-section> div classsection-header> div classsection-icon> i classfas fa-clock>/i> /div> h3>timestamp to datetime/h3> /div> form classlayui-form idtimestampToDatetimeForm lay-filtertimestampToDatetimeForm onsubmitreturn false> div classform-group> label classform-label>Enter Timestamp/label> input typetext nametimestamp placeholderEnter timestamp here... classmodern-input idtimestamp-input-single value autofocus> /div> div classcontrol-panel> button classconvert-btn lay-submit lay-filtertimestampToDatetime idtimestampToDatetime> i classfas fa-arrow-right stylemargin-right: 8px;>/i> Convert /button> select nameunit lay-filterunitChange classmodern-select> option values>Second (s)/option> option valuems>Millisecond (ms)/option> /select> select classmodern-select timezone nametimezone lay-filtertimezoneChange> option valueUTC+0>UTC/option> option valueUTC+12>UTC+12/option> option valueUTC+11>UTC+11/option> option valueUTC+10>UTC+10/option> option valueUTC+9>UTC+9/option> option valueUTC+8>UTC+8/option> option valueUTC+7>UTC+7/option> option valueUTC+6>UTC+6/option> option valueUTC+5>UTC+5/option> option valueUTC+4>UTC+4/option> option valueUTC+3>UTC+3/option> option valueUTC+2>UTC+2/option> option valueUTC+1>UTC+1/option> option valueUTC-1>UTC-1/option> option valueUTC-2>UTC-2/option> option valueUTC-3>UTC-3/option> option valueUTC-4>UTC-4/option> option valueUTC-5>UTC-5/option> option valueUTC-6>UTC-6/option> option valueUTC-7>UTC-7/option> option valueUTC-8>UTC-8/option> option valueUTC-9>UTC-9/option> option valueUTC-10>UTC-10/option> option valueUTC-11>UTC-11/option> option valueUTC-12>UTC-12/option> /select> /div> div classform-group> label classform-label>Converted DateTime/label> div classresult-container> input typetext namedatetime placeholderConverted result will appear here... classmodern-input result-output readonly> button typebutton classcopy-result-btn onclickcopyResultValue(this) titleCopy result> i classfas fa-copy>/i> /button> /div> /div> /form> /div> !-- 日期转时间戳区域 --> div classconversion-section> div classsection-header> div classsection-icon> i classfas fa-calendar-alt>/i> /div> h3>datetime to timestamp span stylefont-weight: normal; color: grey;> ( Format: year-month-day hour:minute:second )/span>/h3> /div> form classlayui-form iddatetimeToTimestampForm lay-filterdatetimeToTimestampForm onsubmitreturn false> div classform-group> label classform-label>Enter DateTime (YYYY-MM-DD HH:mm:ss)/label> input typetext namedatetime placeholder2024-01-01 12:00:00 classmodern-input iddatetime-input-single value > /div> div classcontrol-panel> button classconvert-btn lay-submit lay-filterdatetimeToTimestamp> i classfas fa-arrow-right stylemargin-right: 8px;>/i> Convert /button> select classmodern-select timezone lay-filtertimezoneChange nametimezone> option valueUTC+0>UTC/option> option valueUTC+12>UTC+12/option> option valueUTC+11>UTC+11/option> option valueUTC+10>UTC+10/option> option valueUTC+9>UTC+9/option> option valueUTC+8>UTC+8/option> option valueUTC+7>UTC+7/option> option valueUTC+6>UTC+6/option> option valueUTC+5>UTC+5/option> option valueUTC+4>UTC+4/option> option valueUTC+3>UTC+3/option> option valueUTC+2>UTC+2/option> option valueUTC+1>UTC+1/option> option valueUTC-1>UTC-1/option> option valueUTC-2>UTC-2/option> option valueUTC-3>UTC-3/option> option valueUTC-4>UTC-4/option> option valueUTC-5>UTC-5/option> option valueUTC-6>UTC-6/option> option valueUTC-7>UTC-7/option> option valueUTC-8>UTC-8/option> option valueUTC-9>UTC-9/option> option valueUTC-10>UTC-10/option> option valueUTC-11>UTC-11/option> option valueUTC-12>UTC-12/option> /select> select classmodern-select lay-filterunitChange nameunit> option values>Second (s)/option> option valuems>Millisecond (ms)/option> /select> /div> div classform-group> label classform-label>Converted Timestamp/label> div classresult-container> input typetext nametimestamp placeholderConverted timestamp will appear here... classmodern-input result-output readonly> button typebutton classcopy-result-btn onclickcopyResultValue(this) titleCopy result> i classfas fa-copy>/i> /button> /div> /div> /form> /div> /div> /div> !-- 工具间快速导航 --> div classtools-navigation> button classnav-btn onclickscrollToElement(batch-converter)> i classfas fa-arrow-down>/i> span>Jump to Batch Converter/span> div classnav-hint>Process multiple timestamps/div> /button> /div> !-- 批量转换工具 --> div classtimestamp-tool idbatch-converter> div classtool-header> div classtool-icon> i classfas fa-list>/i> /div> h2>Multiple unix timestamp converter/h2> /div> div classtool-content> !-- 批量时间戳转日期区域 --> div classconversion-section> div classsection-header> div classsection-icon> i classfas fa-clock>/i> /div> h3>multiple timestamp > datetime (one per line)/h3> /div> form classlayui-form idbatchTimestampToDatetimeForm lay-filterbatchTimestampToDatetimeForm onsubmitreturn false> div classform-group> label classform-label>Enter Multiple Timestamps (One Per Line)/label> textarea placeholderEnter timestamps here, one per line... classmodern-textarea nametimestampText idtimestamp-textarea-multi>/textarea> /div> div classcontrol-panel> button classconvert-btn lay-submit lay-filterbatchTimestampToDatetime> i classfas fa-arrow-right stylemargin-right: 8px;>/i> Convert /button> select classmodern-select lay-filterunitChange nameunit> option values>Second (s)/option> option valuems>Millisecond (ms)/option> /select> select classmodern-select timezone lay-filtertimezoneChange nametimezone> option valueUTC+0>UTC/option> option valueUTC+12>UTC+12/option> option valueUTC+11>UTC+11/option> option valueUTC+10>UTC+10/option> option valueUTC+9>UTC+9/option> option valueUTC+8>UTC+8/option> option valueUTC+7>UTC+7/option> option valueUTC+6>UTC+6/option> option valueUTC+5>UTC+5/option> option valueUTC+4>UTC+4/option> option valueUTC+3>UTC+3/option> option valueUTC+2>UTC+2/option> option valueUTC+1>UTC+1/option> option valueUTC-1>UTC-1/option> option valueUTC-2>UTC-2/option> option valueUTC-3>UTC-3/option> option valueUTC-4>UTC-4/option> option valueUTC-5>UTC-5/option> option valueUTC-6>UTC-6/option> option valueUTC-7>UTC-7/option> option valueUTC-8>UTC-8/option> option valueUTC-9>UTC-9/option> option valueUTC-10>UTC-10/option> option valueUTC-11>UTC-11/option> option valueUTC-12>UTC-12/option> /select> /div> table classmodern-table idbatchResult1> thead> tr> th>input/th> th>output/th> /tr> /thead> tbody>/tbody> /table> /form> /div> !-- 批量日期转时间戳区域 --> div classconversion-section> div classsection-header> div classsection-icon> i classfas fa-calendar-alt>/i> /div> h3>multiple datetime > to timestamp (one per line)/h3> /div> form classlayui-form idbatchDatetimeToTimestampForm lay-filterbatchDatetimeToTimestampForm onsubmitreturn false> div classform-group> label classform-label>Enter Multiple DateTimes (One Per Line, YYYY-MM-DD HH:mm:ss)/label> textarea placeholderEnter datetime strings here, one per line... iddatetime-textarea-multi classmodern-textarea namedatetimeText>/textarea> /div> div classcontrol-panel> button classconvert-btn lay-submit lay-filterbatchDatetimeToTimestamp> i classfas fa-arrow-right stylemargin-right: 8px;>/i> Convert /button> select classmodern-select timezone lay-filtertimezoneChange nametimezone> option valueUTC+0>UTC/option> option valueUTC+12>UTC+12/option> option valueUTC+11>UTC+11/option> option valueUTC+10>UTC+10/option> option valueUTC+9>UTC+9/option> option valueUTC+8>UTC+8/option> option valueUTC+7>UTC+7/option> option valueUTC+6>UTC+6/option> option valueUTC+5>UTC+5/option> option valueUTC+4>UTC+4/option> option valueUTC+3>UTC+3/option> option valueUTC+2>UTC+2/option> option valueUTC+1>UTC+1/option> option valueUTC-1>UTC-1/option> option valueUTC-2>UTC-2/option> option valueUTC-3>UTC-3/option> option valueUTC-4>UTC-4/option> option valueUTC-5>UTC-5/option> option valueUTC-6>UTC-6/option> option valueUTC-7>UTC-7/option> option valueUTC-8>UTC-8/option> option valueUTC-9>UTC-9/option> option valueUTC-10>UTC-10/option> option valueUTC-11>UTC-11/option> option valueUTC-12>UTC-12/option> /select> select classmodern-select lay-filterunitChange nameunit> option values>Second (s)/option> option valuems>Millisecond (ms)/option> /select> /div> table classmodern-table idbatchResult2> thead> tr> th>input/th> th>output/th> /tr> /thead> tbody>/tbody> /table> /form> /div> /div> /div> !-- 返回顶部导航 --> div classtools-navigation> button classnav-btn back-to-top onclickscrollToElement(single-converter)> i classfas fa-arrow-up>/i> span>Back to Single Converter/span> div classnav-hint>Or return to top/div> /button> /div> !-- 说明文档 --> div classinfo-card> h2>What is unix epoch time?/h2> p>Unix epoch time (also known as Unix time, Unix timestamp, POSIX time, seconds since the epoch) is a system for describing a point in time. br> It is the number of seconds that have elapsed since the unix epoch, minus leap seconds; the unix epoch is 00:00:00 UTC on 1 January 1970 (an arbitrary date); leap seconds are ignored,with a leap second having the same unix time as the second before it, and every day is treated as if it contains exactly 86400 seconds. due to this treatment unix time is not a true representation of UTC./p> table idepochTable classmodern-table lay-filterepochTableFilter> thead> tr> th>Human Readable Time/th> th>Seconds/th> /tr> /thead> tbody> tr> td>1 Minute/td> td>60 Seconds/td> /tr> tr> td>1 Hour/td> td>3600 Seconds/td> /tr> tr> td>1 Day/td> td>86400 Seconds/td> /tr> tr> td>1 Week/td> td>604800 Seconds/td> /tr> tr> td>1 Year (365 Day)/td> td>31536000 Seconds/td> /tr> /tbody> /table> /div> !-- 重要时间戳 --> div classinfo-card> h2>Some important unix epoch and dateTime/h2> table idepochDateTable classmodern-table lay-filterepochTableFilter> thead> tr> th>Unix Epoch Seconds/th> th>Date Time/th> /tr> /thead> tbody> tr> td>a href/en/timestamp-to-datetime/0 target_blank>0/a>/td> td>a href/en/datetime-to-timestamp/1970-01-01+00%3A00%3A00 target_blank>1970-01-01 00:00:00 UTC/a>/td> /tr> tr> td>a href/en/timestamp-to-datetime/946684800 target_blank>946684800/a>/td> td>a href/en/datetime-to-timestamp/2000-01-01+00%3A00%3A00 target_blank>2000-01-01 00:00:00 UTC/a>/td> /tr> tr> td>a href/en/timestamp-to-datetime/1735689600 target_blank>1735689600/a>/td> td>a href/en/datetime-to-timestamp/2025-01-01+00%3A00%3A00 target_blank>2025-01-01 00:00:00 UTC/a>/td> /tr> tr> td>a href/en/timestamp-to-datetime/1761955200 target_blank>1761955200/a>/td> td>a href/en/datetime-to-timestamp/2025-11-01+00%3A00%3A00 target_blank>2025-11-01 00:00:00 UTC/a>/td> /tr> tr> td>a href/en/timestamp-to-datetime/1763596800 target_blank>1763596800/a>/td> td>a href/en/datetime-to-timestamp/2025-11-20+00%3A00%3A00 target_blank>2025-11-20 00:00:00 UTC/a>/td> /tr> tr> td>a href/en/timestamp-to-datetime/1763643600 target_blank>1763643600/a>/td> td>a href/en/datetime-to-timestamp/2025-11-20+13%3A00%3A00 target_blank>2025-11-20 13:00:00 UTC/a>/td> /tr> tr> td>a href/en/timestamp-to-datetime/1763683200 target_blank>1763683200/a>/td> td>a href/en/datetime-to-timestamp/2025-11-21+00%3A00%3A00 target_blank>2025-11-21 00:00:00 UTC/a>/td> /tr> tr> td>a href/en/timestamp-to-datetime/1767225600 target_blank>1767225600/a>/td> td>a href/en/datetime-to-timestamp/2026-01-01+00%3A00%3A00 target_blank>2026-01-01 00:00:00 UTC/a>/td> /tr> tr> td>a href/en/timestamp-to-datetime/2147483647 target_blank>2147483647/a>/td> td>a href/en/datetime-to-timestamp/2038-01-19+03%3A14%3A07 target_blank>2038-01-19 03:14:07 UTC/a>/td> /tr> /tbody> /table> /div> !-- SEO优化内容 --> div classinfo-card> h2>How to Use Unix Timestamp Converter/h2> p>Our Unix timestamp converter is a versatile tool designed to help you convert between Unix timestamps and human-readable date formats. Below are step-by-step instructions for using the various features of this converter./p> h3>Converting Timestamp to Date/h3> ol classstep-list> li>Enter the Unix timestamp in the first input field (supports seconds or milliseconds)/li> li>Select the appropriate unit (seconds or milliseconds)/li> li>Choose your preferred timezone/li> li>Click the Convert button to see the result in human-readable format/li> /ol> h3>Converting Date to Timestamp/h3> ol classstep-list> li>Enter the date in YYYY-MM-DD HH:MM:SS format/li> li>Select the timezone your date corresponds to/li> li>Select your desired output unit (seconds or milliseconds)/li> li>Click the Convert button to get the Unix timestamp/li> /ol> h3>Batch Conversion/h3> p>For multiple conversions, use our batch conversion tools. Simply enter one timestamp or date per line, select the appropriate options, and click Convert to process them all at once./p> /div> !-- 常见问题解答 --> div classinfo-card> h2>Frequently Asked Questions/h2> div classfaq-section> div classfaq-item> h4 classfaq-question>What is a Unix timestamp?/h4> p classfaq-answer>A Unix timestamp represents the number of seconds that have elapsed since January 1, 1970, at 00:00:00 UTC (the Unix Epoch). It is a standardized way to represent a specific point in time regardless of timezone or locale./p> /div> div classfaq-item> h4 classfaq-question>Why do we use Unix timestamps?/h4> p classfaq-answer>Unix timestamps are widely used in programming and databases because they are efficient to store (as a single number), easy to compare, and independent of time zones and daylight saving time changes. They provide a universal reference for time across different systems./p> /div> div classfaq-item> h4 classfaq-question>What is the difference between seconds and milliseconds in Unix timestamps?/h4> p classfaq-answer>The standard Unix timestamp counts seconds since the Unix Epoch. However, for applications requiring greater precision, millisecond timestamps are used, which are 1000 times larger than the standard second-based timestamp (e.g., 1622505600000 instead of 1622505600)./p> /div> div classfaq-item> h4 classfaq-question>How do I handle dates before 1970 (the Unix Epoch)?/h4> p classfaq-answer>Dates before January 1, 1970, are represented as negative Unix timestamps. For example, December 31, 1969, at 23:59:59 UTC would be -1 second from the Unix Epoch./p> /div> div classfaq-item> h4 classfaq-question>Will Unix timestamps ever run out?/h4> p classfaq-answer>The 32-bit Unix timestamp will overflow on January 19, 2038 (known as the Year 2038 problem). However, most modern systems use 64-bit timestamps, which will not overflow for billions of years./p> /div> /div> /div> !-- 应用场景 --> div classinfo-card> h2>Common Uses for Unix Timestamps/h2> p>Unix timestamps are utilized across various applications and domains:/p> ul classbullet-list> li>Database record timestamps and log entries/li> li>Scheduling and cron jobs in operating systems/li> li>File creation and modification times/li> li>Network protocol time synchronization/li> li>Tracking events in web analytics and user activity monitoring/li> /ul> /div> /div> /main> !-- 现代化侧边栏 -->aside classmodern-sidebar> !-- 当前时间戳卡片 --> div classsidebar-card timestamp-card> div classcard-header> div classheader-icon> i classfas fa-clock>/i> /div> h3 classcard-title>Current Timestamp/h3> button classmodern-copy-btn idcopyBtn> i classfas fa-copy>/i> Copy /button> /div> div classcard-content> div classtimestamp-item> label classtimestamp-label>Seconds: /label> span classtimestamp-value idcurrentTimestampSec>--/span> /div> div classtimestamp-item> label classtimestamp-label>Milliseconds: /label> span classtimestamp-value idcurrentTimestampMs>--/span> /div> div classtimestamp-item> label classtimestamp-label>Datetime: /label> span classtimestamp-value idcurrentDatetime>--/span> /div> div classtimestamp-item> label classtimestamp-label>Timezone: /label> span classtimestamp-value idcurrentTimestampZone>--/span> /div> /div> /div> !-- 网站功能卡片 --> div classsidebar-card site-actions-card> div classcard-header> div classheader-icon> i classfas fa-share-alt>/i> /div> h3 classcard-title>Website Guide/h3> /div> div classcard-content> button classaction-item idcopyUrlBtn> i classfas fa-link>/i> span>Copy Site Url/span> /button> button classaction-item idfavBtn> i classfas fa-star>/i> span>Add to Favorite/span> /button> a classaction-item target_blank hrefhttps://www.facebook.com/sharer/sharer.php?uhttps://unixepoch.net> i classfab fa-facebook>/i> span>Share to Facebook/span> /a> a classaction-item target_blank hrefhttps://x.com/intent/post?urlhttps://unixepoch.net> i classfab fa-x-twitter>/i> span>Share to X.com/span> /a> /div> /div> !-- 工具导航卡片 --> div classsidebar-card tools-nav-card> div classcard-header> div classheader-icon> i classfas fa-tools>/i> /div> h3 classcard-title>Tools/h3> /div> div classcard-content> a classnav-item hrefhttps://unixepoch.net/epoch-converter> i classfas fa-stopwatch>/i> span>Epoch Converter/span> i classfas fa-chevron-right>/i> /a> a classnav-item hrefhttps://unixepoch.net/timestamp-converter> i classfas fa-clock>/i> span>Timestamp Converter/span> i classfas fa-chevron-right>/i> /a> a classnav-item hrefhttps://unixepoch.net/timestamp-difference> i classfas fa-minus>/i> span>Timestamp Difference Calculator/span> i classfas fa-chevron-right>/i> /a> a classnav-item hrefhttps://unixepoch.net/timestamp-arithmetic> i classfas fa-calculator>/i> span>Timestamp Add/Subtract Calculator/span> i classfas fa-chevron-right>/i> /a> a classnav-item hrefhttps://unixepoch.net/developer-resources> i classfas fa-code>/i> span>Developer Resources & Code Snippets/span> i classfas fa-chevron-right>/i> /a> a classnav-item hrefhttps://unixepoch.net/age-calculator> i classfas fa-birthday-cake>/i> span>Age Calculator/span> i classfas fa-chevron-right>/i> /a> /div> /div> /aside> /div>!-- 现代化底部footer -->footer classmodern-footer> div classfooter-content> div classfooter-main> div classfooter-brand> div classfooter-logo> div classfooter-logo-icon>/div> h3>UnixEpoch.net/h3> /div> p>Professional timestamp conversion tools for developers and data analysts worldwide/p> div classfooter-social> a href# aria-labelFollow us classsocial-link> i classfas fa-globe>/i> /a> /div> /div> div classfooter-links> div classfooter-column> h4>Tools/h4> ul> li>a href/>Timestamp Converter/a>/li> li>a href/age-calculator>Age Calculator/a>/li> li>a href/sleep-calculator>Sleep Calculator/a>/li> li>a href/timezone-converter>Timezone Converter/a>/li> /ul> /div> div classfooter-column> h4>Company/h4> ul> li>a href/about>About Us/a>/li> li>a href/blog>Blog/a>/li> li>a target_blank hrefhttps://ohtoolbox.com>OhToolbox.com/a>/li> /ul> /div> div classfooter-column> h4>Legal/h4> ul> li>a href/privacy>Privacy Policy/a>/li> li>a href/terms-of-service>Terms of Service/a>/li> li>a href/disclaimer>Disclaimer/a>/li> /ul> /div> div classfooter-column> h4>Resources/h4> ul> li>a href/sitemap.xml>Sitemap/a>/li> li>a href/developer-resources>Developer Resources/a>/li> /ul> /div> /div> /div> div classfooter-bottom> div classfooter-copyright> span>© 2025 UnixEpoch.net. All rights reserved./span> /div> div classfooter-info> span classfooter-stats>Trusted by 1M+ developers worldwide/span> span classfooter-uptime>99.9% uptime guarantee/span> /div> /div> /div>/footer>style>/* 现代化Footer样式 - iLovePDF风格 */.modern-footer { background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%); color: var(--text-color); margin-top: 80px; position: relative; border-top: 1px solid var(--border-color);}.modern-footer::before { content: ; position: absolute; top: 0; left: 0; right: 0; height: 2px; background: linear-gradient(90deg, transparent 0%, var(--primary-color) 30%, var(--secondary-color) 70%, transparent 100%);}.footer-content { max-width: 1200px; margin: 0 auto; padding: 0 24px;}.footer-main { display: grid; grid-template-columns: 1fr 2fr; gap: 48px; padding: 48px 0; border-bottom: 1px solid var(--border-color);}/* Footer Logo 设计 */.footer-logo { display: flex; align-items: center; gap: 12px; margin-bottom: 16px;}/* Footer 时钟Logo设计 */.footer-logo-icon { width: 32px; height: 32px; background: linear-gradient(135deg, var(--primary-color) 0%, var(--secondary-color) 100%); border-radius: 50%; position: relative; box-shadow: 0 3px 8px rgba(255, 107, 74, 0.25); border: 2px solid rgba(255, 255, 255, 0.9); animation: footerClockTick 120s linear infinite;}/* Footer时钟刻度 */.footer-logo-icon::after { content: ; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 20px; height: 20px; border: 1px solid rgba(255, 255, 255, 0.4); border-radius: 50%; background: radial-gradient(circle at center, rgba(255,255,255,0.8) 1px, transparent 1px), conic-gradient(from 0deg, transparent 85deg, rgba(255,255,255,0.6) 90deg, transparent 95deg, transparent 175deg, rgba(255,255,255,0.6) 180deg, transparent 185deg, transparent 265deg, rgba(255,255,255,0.6) 270deg, transparent 275deg);}@keyframes footerClockTick { 0% { box-shadow: 0 3px 8px rgba(255, 107, 74, 0.25), inset 0 -6px 0 -4px rgba(255, 255, 255, 0.7); } 25% { box-shadow: 0 3px 8px rgba(255, 107, 74, 0.25), inset 6px 0 0 -4px rgba(255, 255, 255, 0.7); } 50% { box-shadow: 0 3px 8px rgba(255, 107, 74, 0.25), inset 0 6px 0 -4px rgba(255, 255, 255, 0.7); } 75% { box-shadow: 0 3px 8px rgba(255, 107, 74, 0.25), inset -6px 0 0 -4px rgba(255, 255, 255, 0.7); } 100% { box-shadow: 0 3px 8px rgba(255, 107, 74, 0.25), inset 0 -6px 0 -4px rgba(255, 255, 255, 0.7); }}.footer-brand h3 { font-size: 1.75rem; font-weight: 800; margin: 0; background: linear-gradient(135deg, var(--primary-color), #ff8a65); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;}.footer-brand p { color: var(--text-secondary); line-height: 1.7; margin-bottom: 24px; max-width: 320px; font-size: 15px;}.footer-social { display: flex; gap: 12px;}.social-link { display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; background: var(--white); border: 2px solid var(--border-color); border-radius: var(--radius-sm); color: var(--text-secondary); text-decoration: none; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); box-shadow: var(--shadow-sm);}.social-link:hover { background: linear-gradient(135deg, var(--primary-color), var(--primary-hover)); color: var(--white); border-color: var(--primary-color); transform: translateY(-3px); box-shadow: var(--shadow-md);}.footer-links { display: grid; grid-template-columns: repeat(4, 1fr); gap: 32px;}.footer-column h4 { font-size: 16px; font-weight: 700; margin-bottom: 20px; color: var(--text-color); position: relative;}.footer-column h4::after { content: ; position: absolute; bottom: -8px; left: 0; width: 24px; height: 3px; background: linear-gradient(135deg, var(--primary-color), var(--secondary-color)); border-radius: 2px;}.footer-column ul { list-style: none; margin: 0; padding: 0;}.footer-column li { margin-bottom: 12px;}.footer-column a { color: var(--text-secondary); text-decoration: none; font-size: 15px; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); display: inline-block; position: relative;}.footer-column a:hover { color: var(--primary-color); transform: translateX(6px);}.footer-column a::before { content: ; position: absolute; left: -12px; top: 50%; transform: translateY(-50%); width: 4px; height: 4px; background: var(--primary-color); border-radius: 50%; opacity: 0; transition: opacity 0.3s ease;}.footer-column a:hover::before { opacity: 1;}.footer-bottom { display: flex; justify-content: space-between; align-items: center; padding: 32px 0; font-size: 14px; background: rgba(248, 249, 250, 0.5); border-radius: var(--radius-lg) var(--radius-lg) 0 0; margin: 0 -24px; padding-left: 24px; padding-right: 24px;}.footer-copyright { color: var(--text-secondary); font-weight: 500;}.footer-info { display: flex; gap: 32px;}.footer-stats,.footer-uptime { color: var(--text-secondary); font-size: 13px; font-weight: 500;}.footer-stats::before { content: 🏆; margin-right: 4px;}.footer-uptime::before { content: ⚡; margin-right: 4px;}/* 响应式设计 */@media (max-width: 1024px) { .footer-links { grid-template-columns: repeat(2, 1fr); gap: 24px; } .footer-main { grid-template-columns: 1fr; gap: 32px; }}@media (max-width: 768px) { .footer-main { padding: 32px 0; } .footer-links { grid-template-columns: 1fr; gap: 20px; } .footer-bottom { flex-direction: column; gap: 16px; text-align: center; } .footer-info { flex-direction: column; gap: 8px; } .footer-brand p { max-width: none; }}@media (max-width: 480px) { .footer-content { padding: 0 16px; } .footer-main { padding: 24px 0; } .footer-brand h3 { font-size: 1.25rem; }}/style>!-- 动态注入的页面脚本 -->script>layui.use(form, element, layer, function () { var form layui.form , element layui.element , layer layui.layer; var $ layui.$; const DateTime luxon.DateTime; // 标记变量,用于判断是否是代码触发按钮点击 var isCodeTrigger false; // 代码触发按钮点击事件 document.querySelectorAll(.convert-btn).forEach(function (btn) { btn.addEventListener(click, function () { isCodeTrigger true; }) }); // 监听单位选择变化 form.on(select(unitChange), function(data) { console.log(unitChange, data); var formElement $(data.elem).closest(form); var button formElement.find(.convert-btn); if (button) { // 模拟点击按钮 isCodeTrigger false; button.click(); } }); // 监听时区选择变化 form.on(select(timezoneChange), function(data) { console.log(timezoneChange, data); var formElement $(data.elem).closest(form); var button formElement.find(.convert-btn); if (button) { // 模拟点击按钮 button.click(); } }); // 时间戳转日期 form.on(submit(timestampToDatetime), function(data) { const timestamp data.field.timestamp, unit data.field.unit, timezone data.field.timezone; console.log(timestamp, timestamp, unit, unit, timezone, timezone); console.log(data.form, data.form, data.field, data.field); const dat2 new Date(); const offsetMinutes dat2.getTimezoneOffset(); console.log(offsetMinutes, offsetMinutes) if(timestamp ) { if(isCodeTrigger) { layer.msg(enter timestamp, {icon: 2}); } return; } isCodeTrigger false; // 输入合法性校验 if (!/^\d+$/.test(timestamp)) { layer.msg(timestamp must be a numeric type, {icon: 2}); return false; } try { formattedDate timestampToDate(Number(timestamp), unit, timezone); const timestampNum unit s ? parseInt(timestamp) * 1000 : parseInt(timestamp); console.log(formattedDate, formattedDate); form.val(timestampToDatetimeForm, { datetime: formattedDate}); } catch (e) { layer.msg(Conversion error. Please check your input. error msg: + e.message, {icon: 2}); } return false; }); // 日期转时间戳 form.on(submit(datetimeToTimestamp), function(data) { const datetime data.field.datetime, unit data.field.unit, timezone data.field.timezone; console.log(datetime, datetime, unit, unit, timezone, timezone); console.log(data.form, data.form, data.field, data.field); if(datetime ) { if(isCodeTrigger) { layer.msg(enter datetime YYYY-MM-DD HH:mm:ss, {icon: 2}); } return; } isCodeTrigger false; // 输入合法性校验 if (!/^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})$/.test(datetime)) { layer.msg(Failed: Date format is invalid, enter YYYY-MM-DD HH:mm:ss., {icon: 2}); return false; } try { timestamp dateToTimestamp(datetime, timezone, unit); console.log(timestamp, timestamp); form.val(datetimeToTimestampForm, { timestamp: timestamp}); } catch (e) { layer.msg(An error occurred during conversion. Please check the input, {icon: 2}); } return false; }); // 批量时间戳转日期 form.on(submit(batchTimestampToDatetime), function(data) { const resultTable $(#batchResult1) const tbody resultTable.find(tbody); tbody.empty(); const timestampText data.field.timestampText, unit data.field.unit, timezone data.field.timezone; const inputList timestampText.trim().split(\n); if(timestampText.trim() ) { if(isCodeTrigger) { layer.msg(enter timestamp numbers, {icon: 2}); } return; } isCodeTrigger false; try { inputList.forEach((item) > { const output timestampToDate(Number(item), unit, timezone); tbody.append(`tr>td>${item}/td>td>${output}/td>/tr>`); }); } catch (e) { layer.msg(Conversion error. Please check your input. error msg: + e.message, {icon: 2}); } return false; }); // 批量日期转时间戳 form.on(submit(batchDatetimeToTimestamp), function(data) { const resultTable $(#batchResult2) const tbody resultTable.find(tbody); tbody.empty(); const datetimeText data.field.datetimeText, unit data.field.unit, timezone data.field.timezone; const inputList datetimeText.trim().split(\n); if(datetimeText.trim() ) { if(isCodeTrigger) { layer.msg(enter YYYY-MM-DD HH:mm:ss, {icon: 2}); } return; } isCodeTrigger false; try { inputList.forEach((item) > { const output dateToTimestamp(item, timezone, unit); tbody.append(`tr>td>${item}/td>td>${output}/td>/tr>`); }); } catch (e) { layer.msg(An error occurred during conversion. Please check the input, {icon: 2}); } return false; }); form.render(); // 时间戳转换日期函数 (时间戳、单位, 转换出时区) function timestampToDate(timestamp, unit s, timezone UTC) { // 根据单位将时间戳转换为毫秒 let timestampInMs; if (unit s) { timestampInMs timestamp * 1000; } else if (unit ms) { timestampInMs timestamp; } else { throw new Error(The unit parameter must be either s or ms); } // 解析时区字符串 let parsedTimezone; if (/^UTC+-\d+$/.test(timezone)) { const offset parseInt(timezone.slice(3)); parsedTimezone `UTC${offset > 0 ? + : }${offset}`; } else if (timezone UTC) { parsedTimezone UTC; } else { throw new Error(Invalid time zone format. Please use formats such as UTC, UTC+1, UTC+8, etc); } // 创建 DateTime 对象并设置时区 const date DateTime.fromMillis(timestampInMs).setZone(parsedTimezone); // 检查日期是否有效 if (!date.isValid) { throw new Error(Invalid timestamp.); } // 格式化日期 return date.toFormat(yyyy-MM-dd HH:mm:ss); } // 日期转换时间戳函数 (日期,转换出时区,单位) function dateToTimestamp(datestr, timezoneInput UTC, unit s) { // 解析输入的时区 let timezone; if (timezoneInput UTC) { timezone UTC; } else if (/^UTC+-\d+$/.test(timezoneInput)) { const offset parseInt(timezoneInput.slice(3)); timezone `UTC${offset > 0 ? + : }${offset}`; } else { layer.msg(`Failed: Invalid time zone format, please enter a format such as UTC, UTC+8, UTC-8`, {icon: 2}); return; } // 解析输入的日期 const date DateTime.fromFormat(datestr, yyyy-MM-dd HH:mm:ss, { zone: timezone }); if (!date.isValid) { layer.msg(`Failed: The date format is invalid, enter YYYY-MM-DD HH:mm:ss.`, {icon: 2}); return; } // 根据选择的单位获取时间戳 let timestamp; if (unit s) { timestamp Math.floor(date.toMillis() / 1000); } else { timestamp date.toMillis(); } return timestamp; } // 获取时区偏移量 function getTimezoneOffset() { const date new Date(); const offsetMinutes date.getTimezoneOffset(); const offsetHour Math.abs(Math.floor(offsetMinutes / 60)).toString().padStart(2, 0); const offsetSign offsetMinutes 0 ? - : +; return `${offsetSign}${offsetHour}:${(offsetMinutes % 60).toString().padStart(2, 0)}`; } // 复制结果值功能 window.copyResultValue function(button) { const input button.previousElementSibling; const value input.value; if (!value || value input.placeholder) { layer.msg(No result to copy!, {icon: 2}); return; } if (navigator.clipboard) { navigator.clipboard.writeText(value) .then(() > { layer.msg(Copied successfully!, {icon: 1}); // 临时变更图标提供视觉反馈 const icon button.querySelector(i); const originalClass icon.className; icon.className fas fa-check; setTimeout(() > { icon.className originalClass; }, 1000); }) .catch(() > { layer.msg(Copy failed!, {icon: 2}); }); } else { // 降级方案 input.select(); try { document.execCommand(copy); layer.msg(Copied successfully!, {icon: 1}); } catch (err) { layer.msg(Copy failed!, {icon: 2}); } } }; function initPlaceholderAndTime() { // init 初始化时间戳 placeholder var initDate new Date(); var initTimestamp1 Math.floor(initDate.getTime()/1000); var initDate2 new Date(initDate.getFullYear() + -01-01); var initTimestamp2 Math.floor(initDate2.getTime()/1000); var initDatetime1 timestampToDate(initTimestamp1); var initDatetime2 timestampToDate(initTimestamp2); // 设置初始化的place holder // 获取 input 元素 var input document.getElementById(timestamp-input-single); // 设置 placeholder 属性 input.setAttribute(placeholder, initTimestamp2); // 获取 input 元素 var input document.getElementById(datetime-input-single); // 设置 placeholder 属性 input.setAttribute(placeholder, initDatetime2); // 获取 textarea 元素 var textarea document.getElementById(timestamp-textarea-multi); // 设置 placeholder 属性 textarea.setAttribute(placeholder, initTimestamp1, initTimestamp2.join(\n)); // 获取 textarea 元素 var textarea document.getElementById(datetime-textarea-multi); // 设置 placeholder 属性 textarea.setAttribute(placeholder, initDatetime1, initDatetime2.join(\n)); // init 初始化时间戳 placeholder end // init 设置当前浏览器默认时区 // 使用 Luxon 获取当前时区的 UTC 偏移值 const DateTime luxon.DateTime; const now DateTime.now(); const offset now.offset; const offsetHours Math.floor(offset / 60); console.log(offsetHours, offsetHours); let timezoneUTC UTC+0; if (offsetHours > 0) { timezoneUTC UTC+ + offsetHours; } else if (offsetHours 0) { timezoneUTC UTC- + offsetHours; } console.log(timezoneUTC, timezoneUTC) // 获取 select 元素 // 监听所有 class 为 a 的 select 元素的变化事件 document.querySelectorAll(select.timezone).forEach(function (select) { console.log(select); // 遍历 option 元素,找到匹配的 UTC 偏移值并设置为选中状态 for (let j 0; j select.options.length; j++) { select.value timezoneUTC; // 重新渲染 select 组件,使设置生效 form.render(select); } }); // init 设置当前浏览器默认时区 end } // 初始化 initPlaceholderAndTime();});// 平滑滚动到指定元素的功能function scrollToElement(elementId) { const element document.getElementById(elementId); if (element) { // 计算偏移量,考虑固定头部高度 const headerOffset 80; const elementPosition element.getBoundingClientRect().top; const offsetPosition elementPosition + window.pageYOffset - headerOffset; // 平滑滚动 window.scrollTo({ top: offsetPosition, behavior: smooth }); // 添加视觉反馈和焦点管理 element.style.transform scale(1.02); element.style.transition transform 0.3s ease; element.style.boxShadow 0 0 0 3px rgba(74, 144, 164, 0.3); // 数据埋点 - 记录用户导航行为 if (typeof gtag ! undefined) { gtag(event, navigation_click, { event_category: User_Navigation, event_label: elementId, value: 1 }); } setTimeout(() > { element.style.transform scale(1); element.style.boxShadow ; // 聚焦到第一个输入框以提升用户体验 const firstInput element.querySelector(inputtypetext:not(readonly)); if (firstInput) { firstInput.focus(); } }, 300); }}// 键盘快捷键支持document.addEventListener(keydown, function(e) { // Alt + 1: 跳转到单个转换 if (e.altKey && e.key 1) { e.preventDefault(); scrollToElement(single-converter); } // Alt + 2: 跳转到批量转换 else if (e.altKey && e.key 2) { e.preventDefault(); scrollToElement(batch-converter); } // Esc: 返回顶部 else if (e.key Escape) { window.scrollTo({ top: 0, behavior: smooth }); }});// 滚动进度指示器function createScrollIndicator() { const indicator document.createElement(div); indicator.className scroll-progress-indicator; indicator.innerHTML ` div classprogress-bar>/div> div classprogress-sections> div classsection-indicator data-targetsingle-converter title? $js_translationssection_single_title ?>>1/div> div classsection-indicator data-targetbatch-converter title? $js_translationssection_batch_title ?>>2/div> /div> `; document.body.appendChild(indicator); // 滚动进度更新 window.addEventListener(scroll, updateScrollProgress); // 点击指示器跳转 indicator.addEventListener(click, function(e) { if (e.target.classList.contains(section-indicator)) { const target e.target.dataset.target; scrollToElement(target); } });}function updateScrollProgress() { const scrolled window.pageYOffset; const maxScroll document.documentElement.scrollHeight - window.innerHeight; const progress (scrolled / maxScroll) * 100; const progressBar document.querySelector(.progress-bar); if (progressBar) { progressBar.style.width `${Math.min(progress, 100)}%`; } // 高亮当前区域指示器 const sections single-converter, batch-converter; const indicators document.querySelectorAll(.section-indicator); sections.forEach((sectionId, index) > { const section document.getElementById(sectionId); const indicator indicatorsindex; if (section && indicator) { const rect section.getBoundingClientRect(); const isInView rect.top 200 && rect.bottom > 200; indicator.classList.toggle(active, isInView); } });}// 页面加载完成后初始化增强功能document.addEventListener(DOMContentLoaded, function() { createScrollIndicator(); // 显示键盘快捷键提示(仅显示一次) if (!localStorage.getItem(shortcut-hint-shown)) { setTimeout(() > { const hint document.createElement(div); hint.className keyboard-shortcut-hint; hint.innerHTML ` div classhint-content> h4>? $js_translationskeyboard_tips_title ?>/h4> p>kbd>Alt + 1/kbd> ? $js_translationskeyboard_tip_single ?>/p> p>kbd>Alt + 2/kbd> ? $js_translationskeyboard_tip_batch ?>/p> p>kbd>Esc/kbd> ? $js_translationskeyboard_tip_top ?>/p> button onclickthis.parentElement.parentElement.remove()>? $js_translationsgot_it ?>/button> /div> `; document.body.appendChild(hint); setTimeout(() > { if (hint.parentElement) { hint.remove(); } }, 5000); localStorage.setItem(shortcut-hint-shown, true); }, 2000); }});/script>script>layui.use(layer, function () { var layer layui.layer; var $ layui.$; const DateTime luxon.DateTime; // 当前时间内容 var currentContent; // 初始化调用 updateCurrentTime(); // 标记侧边栏已加载,显示内容 setTimeout(function() { const sidebar document.querySelector(.modern-sidebar); if (sidebar) { sidebar.classList.add(loaded); } }, 100); // 每秒刷新一次 setInterval(updateCurrentTime, 1000); // 更新时间函数 function updateCurrentTime() { const DateTime luxon.DateTime; // 获取当前时间 const now DateTime.now(); // 获取当前日期时间,格式化为 YYYY-MM-DD HH:mm:ss const currentDateTime now.toFormat(yyyy-MM-dd HH:mm:ss); // 获取当前时区名称 const timezoneName now.zoneName; // 获取当前时区偏移量(以小时为单位) const timezoneOffsetHours now.offset / 60; const formattedOffset timezoneOffsetHours > 0 ? `+${timezoneOffsetHours.toString()}` : `${timezoneOffsetHours.toString()}`; // 拼接时区信息 const timezoneInfo `UTC${formattedOffset} (${timezoneName})`; // 获取当前秒级时间戳 const currentSecondTimestamp Math.floor(now.toMillis() / 1000); // 获取当前毫秒级时间戳 const currentMillisecondTimestamp now.toMillis(); // 渲染到页面 - 使用平滑更新避免抖动 currentContent currentSecondTimestamp, currentMillisecondTimestamp, currentDateTime, timezoneInfo.join(\n); // 安全更新DOM元素 const elements { currentDatetime: currentDateTime, currentTimestampSec: currentSecondTimestamp, currentTimestampMs: currentMillisecondTimestamp, currentTimestampZone: timezoneInfo }; Object.keys(elements).forEach(function(id) { const element document.getElementById(id); if (element && element.textContent ! elementsid) { element.textContent elementsid; } }); } // 当前日期复制功能 document.getElementById(copyBtn).addEventListener(click, async () > { copyText(currentContent); }); // 加入收藏功能 document.getElementById(favBtn).addEventListener(click, function() { const siteName document.title; const siteUrl window.location.href; // 检测浏览器是否支持添加收藏 if (window.addFavorite) { window.addFavorite(siteUrl, siteName); layer.msg(Added to browser favorites successfully!, {icon: 1}); } if (window.external && addFavorite in window.external) { window.external.addFavorite(siteUrl, document.title); layer.msg(Added to browser favorites successfully!, {icon: 1}); } else { // 部分浏览器替代方案 layer.msg(Please use browser shortcut (Ctrl+D / Cmd + D) to add to favorites!, {icon: 2}); } }); // 复制URL网站功能 document.getElementById(copyUrlBtn).addEventListener(click, function() { const url window.location.href; copyText(url); }); // 复制文本函数 function copyText(text) { if (navigator.clipboard) { navigator.clipboard.writeText(text) .then(() > { layer.msg(Copy successfully!, {icon: 1}); }) .catch(err > { layer.msg(Copy failed: + err.message, {icon: 2}); }); } else if (document.execCommand) { const textarea document.createElement(textarea); textarea.value text; textarea.style.position fixed; textarea.style.opacity 0; document.body.appendChild(textarea); textarea.select(); try { const successful document.execCommand(copy); layer.msg(successful ? Copy successfully! : Copy failed!, {icon: successful ? 1 : 2}); } catch (err) { layer.msg(Copy failed: + err.message, {icon: 2}); } finally { document.body.removeChild(textarea); } } else { layer.msg(This browser does not support the copy function. Please use another browser., {icon: 2}); } } // 文章页面特定功能 if (typeof window.articlePageFunctions ! undefined) { // 文章分享功能 $(document).on(click, #articleShareBtn, function() { var url window.location.href; var title document.title; if (navigator.share) { navigator.share({ title: title, url: url }); } else { copyText(url); } }); // 返回顶部功能 $(document).on(click, #backToTopBtn, function() { $(html, body).animate({scrollTop: 0}, 500); }); }});/script>style>/* 防抖动预设样式 */.modern-sidebar { min-height: 200px; opacity: 0; transition: opacity 0.3s ease;}.modern-sidebar.loaded { opacity: 1;}/* 时间戳值容器预设尺寸防止抖动 */.timestamp-value { min-width: 120px; display: inline-block; text-align: right;}/* 卡片内容预设最小高度 */.sidebar-card { min-height: 60px;}.timestamp-card .card-content { min-height: 160px;}.site-actions-card .card-content { min-height: 120px;}.tools-nav-card .card-content { min-height: 200px;}/* 进一步优化性能和防抖动 */.timestamp-value { font-variant-numeric: tabular-nums; letter-spacing: 0.5px;}/* 卡片动画优化 */.sidebar-card { transform: translateZ(0); backface-visibility: hidden; will-change: transform;}/* 减少重绘优化 */.timestamp-item { contain: layout style paint;}/style>style>/* Modern Sidebar CSS Variables - 温暖淡雅配色 */:root { --primary-color: #ff6b4a; --primary-hover: #ff5722; --secondary-color: #4fc3f7; --secondary-hover: #29b6f6; --success-color: #4caf50; --warning-color: #ff9800; --purple-primary: #9c27b0; --purple-secondary: #673ab7; --white: #ffffff; --text-color: #202124; --text-secondary: #5f6368; --dark-gray: #5f6368; --border-color: #e8eaed; --info-color: #2196f3; --font-family: Inter, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, sans-serif; --transition-base: 300ms cubic-bezier(0.4, 0, 0.2, 1); --shadow-lg: 0 4px 16px rgba(0, 0, 0, 0.06); --shadow-xl: 0 8px 24px rgba(0, 0, 0, 0.08);}/* Modern Sidebar Styles */.modern-sidebar { background: transparent; padding: 0; position: sticky; top: 20px; height: auto;}/* Sidebar Cards - iLovePDF风格 */.sidebar-card { background: var(--white); border-radius: 16px; box-shadow: var(--shadow-lg); margin-bottom: 24px; border: 1px solid var(--border-color); overflow: hidden; transition: all var(--transition-base);}.sidebar-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-xl); border-color: rgba(255, 107, 74, 0.2);}.card-header { padding: 20px 24px; background: var(--light-gray, #fafbfc); border-bottom: 1px solid var(--border-color); display: flex; align-items: center; gap: 12px; position: relative;}.header-icon { display: flex; align-items: center; justify-content: center; width: 36px; height: 36px; background: linear-gradient(135deg, var(--primary-color), var(--primary-hover)); border-radius: 12px; color: white; font-size: 14px; flex-shrink: 0; box-shadow: 0 2px 8px rgba(255, 107, 74, 0.2);}.card-title { font-size: 1.125rem; font-weight: 700; color: var(--text-color); margin: 0; flex: 1;}.card-content { padding: 0;}/* Timestamp Card Styles */.timestamp-card .header-icon { background: linear-gradient(135deg, var(--info-color), var(--secondary-hover));}.modern-copy-btn { padding: 6px 12px; background: var(--primary-color); color: white; border: none; border-radius: 8px; font-size: 0.75rem; font-weight: 600; cursor: pointer; transition: all 0.3s ease; display: flex; align-items: center; gap: 4px; text-transform: uppercase; letter-spacing: 0.5px;}.modern-copy-btn:hover { background: var(--primary-hover); transform: translateY(-1px); box-shadow: 0 4px 12px rgba(231, 76, 60, 0.3);}.timestamp-item { display: flex; justify-content: space-between; align-items: center; padding: 16px 24px; border-bottom: 1px solid rgba(0, 0, 0, 0.05); transition: all 0.3s ease;}.timestamp-item:last-child { border-bottom: none;}.timestamp-item:hover { background: rgba(52, 152, 219, 0.05);}.timestamp-label { font-size: 0.875rem; font-weight: 600; color: var(--dark-gray);}.timestamp-value { font-size: 0.875rem; font-weight: 700; color: var(--text-color); font-family: Monaco, Menlo, Ubuntu Mono, monospace; background: rgba(52, 152, 219, 0.1); padding: 4px 8px; border-radius: 6px;}/* Site Actions Card */.site-actions-card .header-icon { background: linear-gradient(135deg, var(--success-color), #2ecc71);}.action-item { display: flex; align-items: center; gap: 12px; padding: 16px 24px; border: none; background: none; color: var(--text-color); text-decoration: none; font-size: 0.9rem; font-weight: 500; cursor: pointer; transition: all 0.3s ease; border-bottom: 1px solid rgba(0, 0, 0, 0.05); width: 100%; text-align: left;}.action-item:last-child { border-bottom: none;}.action-item:hover { background: rgba(39, 174, 96, 0.05); color: var(--success-color); transform: translateX(4px);}.action-item i { width: 16px; text-align: center; color: var(--success-color);}/* Tools Navigation Card */.tools-nav-card .header-icon { background: linear-gradient(135deg, var(--warning-color), var(--primary-color));}.nav-item { display: flex; align-items: center; gap: 12px; padding: 16px 24px; color: var(--text-color); text-decoration: none; font-size: 0.9rem; font-weight: 500; transition: all 0.3s ease; border-bottom: 1px solid rgba(0, 0, 0, 0.05);}.nav-item:last-child { border-bottom: none;}.nav-item:hover { background: rgba(243, 156, 18, 0.05); color: var(--warning-color); transform: translateX(4px);}.nav-item i:first-child { width: 16px; text-align: center; color: var(--warning-color);}.nav-item span { flex: 1;}.nav-item i:last-child { font-size: 0.75rem; opacity: 0.5; transition: all 0.3s ease;}.nav-item:hover i:last-child { opacity: 1; transform: translateX(4px);}/* Related Articles Card */.related-articles-card .header-icon { background: linear-gradient(135deg, var(--purple-primary), var(--purple-secondary));}.article-item { display: flex; align-items: center; gap: 12px; padding: 16px 24px; color: var(--text-color); text-decoration: none; font-size: 0.9rem; font-weight: 500; transition: all 0.3s ease; border-bottom: 1px solid rgba(0, 0, 0, 0.05);}.article-item:last-child { border-bottom: none;}.article-item:hover { background: rgba(102, 126, 234, 0.05); color: var(--purple-primary); transform: translateX(4px);}.article-item i:first-child { width: 16px; text-align: center; color: var(--purple-primary);}.article-title { flex: 1; font-weight: 500;}.sidebar-card .article-title { font-size: 1rem;}.article-item i:last-child { font-size: 0.75rem; opacity: 0.5; transition: all 0.3s ease;}.article-item:hover i:last-child { opacity: 1; transform: translateX(4px);}/* Article Actions Card */.article-actions-card .header-icon { background: linear-gradient(135deg, var(--purple-primary), var(--purple-secondary));}/* Responsive Design */@media (max-width: 1024px) { .modern-sidebar { position: relative; top: 0; max-height: none; margin-top: 24px; } .sidebar-card { margin-bottom: 16px; }}@media (max-width: 768px) { .modern-sidebar { margin-top: 16px; } .sidebar-card { border-radius: 16px; } .card-header { padding: 20px; } .timestamp-item, .action-item, .nav-item, .article-item { padding: 14px 20px; }}/style>!-- 页脚脚本 -->script>// 页脚特定的脚本console.log(Footer script loaded);/script>/body>/html>!-- 页面特定的脚本 -->script>layui.use(form, element, layer, function () { var form layui.form , element layui.element , layer layui.layer; var $ layui.$; const DateTime luxon.DateTime; // 标记变量,用于判断是否是代码触发按钮点击 var isCodeTrigger false; // 代码触发按钮点击事件 document.querySelectorAll(.convert-btn).forEach(function (btn) { btn.addEventListener(click, function () { isCodeTrigger true; }) }); // 监听单位选择变化 form.on(select(unitChange), function(data) { console.log(unitChange, data); var formElement $(data.elem).closest(form); var button formElement.find(.convert-btn); if (button) { // 模拟点击按钮 isCodeTrigger false; button.click(); } }); // 监听时区选择变化 form.on(select(timezoneChange), function(data) { console.log(timezoneChange, data); var formElement $(data.elem).closest(form); var button formElement.find(.convert-btn); if (button) { // 模拟点击按钮 button.click(); } }); // 时间戳转日期 form.on(submit(timestampToDatetime), function(data) { const timestamp data.field.timestamp, unit data.field.unit, timezone data.field.timezone; console.log(timestamp, timestamp, unit, unit, timezone, timezone); console.log(data.form, data.form, data.field, data.field); const dat2 new Date(); const offsetMinutes dat2.getTimezoneOffset(); console.log(offsetMinutes, offsetMinutes) if(timestamp ) { if(isCodeTrigger) { layer.msg(enter timestamp, {icon: 2}); } return; } isCodeTrigger false; // 输入合法性校验 if (!/^\d+$/.test(timestamp)) { layer.msg(timestamp must be a numeric type, {icon: 2}); return false; } try { formattedDate timestampToDate(Number(timestamp), unit, timezone); const timestampNum unit s ? parseInt(timestamp) * 1000 : parseInt(timestamp); console.log(formattedDate, formattedDate); form.val(timestampToDatetimeForm, { datetime: formattedDate}); } catch (e) { layer.msg(Conversion error. Please check your input. error msg: + e.message, {icon: 2}); } return false; }); // 日期转时间戳 form.on(submit(datetimeToTimestamp), function(data) { const datetime data.field.datetime, unit data.field.unit, timezone data.field.timezone; console.log(datetime, datetime, unit, unit, timezone, timezone); console.log(data.form, data.form, data.field, data.field); if(datetime ) { if(isCodeTrigger) { layer.msg(enter datetime YYYY-MM-DD HH:mm:ss, {icon: 2}); } return; } isCodeTrigger false; // 输入合法性校验 if (!/^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})$/.test(datetime)) { layer.msg(Failed: Date format is invalid, enter YYYY-MM-DD HH:mm:ss., {icon: 2}); return false; } try { timestamp dateToTimestamp(datetime, timezone, unit); console.log(timestamp, timestamp); form.val(datetimeToTimestampForm, { timestamp: timestamp}); } catch (e) { layer.msg(An error occurred during conversion. Please check the input, {icon: 2}); } return false; }); // 批量时间戳转日期 form.on(submit(batchTimestampToDatetime), function(data) { const resultTable $(#batchResult1) const tbody resultTable.find(tbody); tbody.empty(); const timestampText data.field.timestampText, unit data.field.unit, timezone data.field.timezone; const inputList timestampText.trim().split(\n); if(timestampText.trim() ) { if(isCodeTrigger) { layer.msg(enter timestamp numbers, {icon: 2}); } return; } isCodeTrigger false; try { inputList.forEach((item) > { const output timestampToDate(Number(item), unit, timezone); tbody.append(`tr>td>${item}/td>td>${output}/td>/tr>`); }); } catch (e) { layer.msg(Conversion error. Please check your input. error msg: + e.message, {icon: 2}); } return false; }); // 批量日期转时间戳 form.on(submit(batchDatetimeToTimestamp), function(data) { const resultTable $(#batchResult2) const tbody resultTable.find(tbody); tbody.empty(); const datetimeText data.field.datetimeText, unit data.field.unit, timezone data.field.timezone; const inputList datetimeText.trim().split(\n); if(datetimeText.trim() ) { if(isCodeTrigger) { layer.msg(enter YYYY-MM-DD HH:mm:ss, {icon: 2}); } return; } isCodeTrigger false; try { inputList.forEach((item) > { const output dateToTimestamp(item, timezone, unit); tbody.append(`tr>td>${item}/td>td>${output}/td>/tr>`); }); } catch (e) { layer.msg(An error occurred during conversion. Please check the input, {icon: 2}); } return false; }); form.render(); // 时间戳转换日期函数 (时间戳、单位, 转换出时区) function timestampToDate(timestamp, unit s, timezone UTC) { // 根据单位将时间戳转换为毫秒 let timestampInMs; if (unit s) { timestampInMs timestamp * 1000; } else if (unit ms) { timestampInMs timestamp; } else { throw new Error(The unit parameter must be either s or ms); } // 解析时区字符串 let parsedTimezone; if (/^UTC+-\d+$/.test(timezone)) { const offset parseInt(timezone.slice(3)); parsedTimezone `UTC${offset > 0 ? + : }${offset}`; } else if (timezone UTC) { parsedTimezone UTC; } else { throw new Error(Invalid time zone format. Please use formats such as UTC, UTC+1, UTC+8, etc); } // 创建 DateTime 对象并设置时区 const date DateTime.fromMillis(timestampInMs).setZone(parsedTimezone); // 检查日期是否有效 if (!date.isValid) { throw new Error(Invalid timestamp.); } // 格式化日期 return date.toFormat(yyyy-MM-dd HH:mm:ss); } // 日期转换时间戳函数 (日期,转换出时区,单位) function dateToTimestamp(datestr, timezoneInput UTC, unit s) { // 解析输入的时区 let timezone; if (timezoneInput UTC) { timezone UTC; } else if (/^UTC+-\d+$/.test(timezoneInput)) { const offset parseInt(timezoneInput.slice(3)); timezone `UTC${offset > 0 ? + : }${offset}`; } else { layer.msg(`Failed: Invalid time zone format, please enter a format such as UTC, UTC+8, UTC-8`, {icon: 2}); return; } // 解析输入的日期 const date DateTime.fromFormat(datestr, yyyy-MM-dd HH:mm:ss, { zone: timezone }); if (!date.isValid) { layer.msg(`Failed: The date format is invalid, enter YYYY-MM-DD HH:mm:ss.`, {icon: 2}); return; } // 根据选择的单位获取时间戳 let timestamp; if (unit s) { timestamp Math.floor(date.toMillis() / 1000); } else { timestamp date.toMillis(); } return timestamp; } // 获取时区偏移量 function getTimezoneOffset() { const date new Date(); const offsetMinutes date.getTimezoneOffset(); const offsetHour Math.abs(Math.floor(offsetMinutes / 60)).toString().padStart(2, 0); const offsetSign offsetMinutes 0 ? - : +; return `${offsetSign}${offsetHour}:${(offsetMinutes % 60).toString().padStart(2, 0)}`; } // 复制结果值功能 window.copyResultValue function(button) { const input button.previousElementSibling; const value input.value; if (!value || value input.placeholder) { layer.msg(No result to copy!, {icon: 2}); return; } if (navigator.clipboard) { navigator.clipboard.writeText(value) .then(() > { layer.msg(Copied successfully!, {icon: 1}); // 临时变更图标提供视觉反馈 const icon button.querySelector(i); const originalClass icon.className; icon.className fas fa-check; setTimeout(() > { icon.className originalClass; }, 1000); }) .catch(() > { layer.msg(Copy failed!, {icon: 2}); }); } else { // 降级方案 input.select(); try { document.execCommand(copy); layer.msg(Copied successfully!, {icon: 1}); } catch (err) { layer.msg(Copy failed!, {icon: 2}); } } }; function initPlaceholderAndTime() { // init 初始化时间戳 placeholder var initDate new Date(); var initTimestamp1 Math.floor(initDate.getTime()/1000); var initDate2 new Date(initDate.getFullYear() + -01-01); var initTimestamp2 Math.floor(initDate2.getTime()/1000); var initDatetime1 timestampToDate(initTimestamp1); var initDatetime2 timestampToDate(initTimestamp2); // 设置初始化的place holder // 获取 input 元素 var input document.getElementById(timestamp-input-single); // 设置 placeholder 属性 input.setAttribute(placeholder, initTimestamp2); // 获取 input 元素 var input document.getElementById(datetime-input-single); // 设置 placeholder 属性 input.setAttribute(placeholder, initDatetime2); // 获取 textarea 元素 var textarea document.getElementById(timestamp-textarea-multi); // 设置 placeholder 属性 textarea.setAttribute(placeholder, initTimestamp1, initTimestamp2.join(\n)); // 获取 textarea 元素 var textarea document.getElementById(datetime-textarea-multi); // 设置 placeholder 属性 textarea.setAttribute(placeholder, initDatetime1, initDatetime2.join(\n)); // init 初始化时间戳 placeholder end // init 设置当前浏览器默认时区 // 使用 Luxon 获取当前时区的 UTC 偏移值 const DateTime luxon.DateTime; const now DateTime.now(); const offset now.offset; const offsetHours Math.floor(offset / 60); console.log(offsetHours, offsetHours); let timezoneUTC UTC+0; if (offsetHours > 0) { timezoneUTC UTC+ + offsetHours; } else if (offsetHours 0) { timezoneUTC UTC- + offsetHours; } console.log(timezoneUTC, timezoneUTC) // 获取 select 元素 // 监听所有 class 为 a 的 select 元素的变化事件 document.querySelectorAll(select.timezone).forEach(function (select) { console.log(select); // 遍历 option 元素,找到匹配的 UTC 偏移值并设置为选中状态 for (let j 0; j select.options.length; j++) { select.value timezoneUTC; // 重新渲染 select 组件,使设置生效 form.render(select); } }); // init 设置当前浏览器默认时区 end } // 初始化 initPlaceholderAndTime();});// 平滑滚动到指定元素的功能function scrollToElement(elementId) { const element document.getElementById(elementId); if (element) { // 计算偏移量,考虑固定头部高度 const headerOffset 80; const elementPosition element.getBoundingClientRect().top; const offsetPosition elementPosition + window.pageYOffset - headerOffset; // 平滑滚动 window.scrollTo({ top: offsetPosition, behavior: smooth }); // 添加视觉反馈和焦点管理 element.style.transform scale(1.02); element.style.transition transform 0.3s ease; element.style.boxShadow 0 0 0 3px rgba(74, 144, 164, 0.3); // 数据埋点 - 记录用户导航行为 if (typeof gtag ! undefined) { gtag(event, navigation_click, { event_category: User_Navigation, event_label: elementId, value: 1 }); } setTimeout(() > { element.style.transform scale(1); element.style.boxShadow ; // 聚焦到第一个输入框以提升用户体验 const firstInput element.querySelector(inputtypetext:not(readonly)); if (firstInput) { firstInput.focus(); } }, 300); }}// 键盘快捷键支持document.addEventListener(keydown, function(e) { // Alt + 1: 跳转到单个转换 if (e.altKey && e.key 1) { e.preventDefault(); scrollToElement(single-converter); } // Alt + 2: 跳转到批量转换 else if (e.altKey && e.key 2) { e.preventDefault(); scrollToElement(batch-converter); } // Esc: 返回顶部 else if (e.key Escape) { window.scrollTo({ top: 0, behavior: smooth }); }});// 滚动进度指示器function createScrollIndicator() { const indicator document.createElement(div); indicator.className scroll-progress-indicator; indicator.innerHTML ` div classprogress-bar>/div> div classprogress-sections> div classsection-indicator data-targetsingle-converter title? $js_translationssection_single_title ?>>1/div> div classsection-indicator data-targetbatch-converter title? $js_translationssection_batch_title ?>>2/div> /div> `; document.body.appendChild(indicator); // 滚动进度更新 window.addEventListener(scroll, updateScrollProgress); // 点击指示器跳转 indicator.addEventListener(click, function(e) { if (e.target.classList.contains(section-indicator)) { const target e.target.dataset.target; scrollToElement(target); } });}function updateScrollProgress() { const scrolled window.pageYOffset; const maxScroll document.documentElement.scrollHeight - window.innerHeight; const progress (scrolled / maxScroll) * 100; const progressBar document.querySelector(.progress-bar); if (progressBar) { progressBar.style.width `${Math.min(progress, 100)}%`; } // 高亮当前区域指示器 const sections single-converter, batch-converter; const indicators document.querySelectorAll(.section-indicator); sections.forEach((sectionId, index) > { const section document.getElementById(sectionId); const indicator indicatorsindex; if (section && indicator) { const rect section.getBoundingClientRect(); const isInView rect.top 200 && rect.bottom > 200; indicator.classList.toggle(active, isInView); } });}// 页面加载完成后初始化增强功能document.addEventListener(DOMContentLoaded, function() { createScrollIndicator(); // 显示键盘快捷键提示(仅显示一次) if (!localStorage.getItem(shortcut-hint-shown)) { setTimeout(() > { const hint document.createElement(div); hint.className keyboard-shortcut-hint; hint.innerHTML ` div classhint-content> h4>? $js_translationskeyboard_tips_title ?>/h4> p>kbd>Alt + 1/kbd> ? $js_translationskeyboard_tip_single ?>/p> p>kbd>Alt + 2/kbd> ? $js_translationskeyboard_tip_batch ?>/p> p>kbd>Esc/kbd> ? $js_translationskeyboard_tip_top ?>/p> button onclickthis.parentElement.parentElement.remove()>? $js_translationsgot_it ?>/button> /div> `; document.body.appendChild(hint); setTimeout(() > { if (hint.parentElement) { hint.remove(); } }, 5000); localStorage.setItem(shortcut-hint-shown, true); }, 2000); }});/script>script>layui.use(layer, function () { var layer layui.layer; var $ layui.$; const DateTime luxon.DateTime; // 当前时间内容 var currentContent; // 初始化调用 updateCurrentTime(); // 标记侧边栏已加载,显示内容 setTimeout(function() { const sidebar document.querySelector(.modern-sidebar); if (sidebar) { sidebar.classList.add(loaded); } }, 100); // 每秒刷新一次 setInterval(updateCurrentTime, 1000); // 更新时间函数 function updateCurrentTime() { const DateTime luxon.DateTime; // 获取当前时间 const now DateTime.now(); // 获取当前日期时间,格式化为 YYYY-MM-DD HH:mm:ss const currentDateTime now.toFormat(yyyy-MM-dd HH:mm:ss); // 获取当前时区名称 const timezoneName now.zoneName; // 获取当前时区偏移量(以小时为单位) const timezoneOffsetHours now.offset / 60; const formattedOffset timezoneOffsetHours > 0 ? `+${timezoneOffsetHours.toString()}` : `${timezoneOffsetHours.toString()}`; // 拼接时区信息 const timezoneInfo `UTC${formattedOffset} (${timezoneName})`; // 获取当前秒级时间戳 const currentSecondTimestamp Math.floor(now.toMillis() / 1000); // 获取当前毫秒级时间戳 const currentMillisecondTimestamp now.toMillis(); // 渲染到页面 - 使用平滑更新避免抖动 currentContent currentSecondTimestamp, currentMillisecondTimestamp, currentDateTime, timezoneInfo.join(\n); // 安全更新DOM元素 const elements { currentDatetime: currentDateTime, currentTimestampSec: currentSecondTimestamp, currentTimestampMs: currentMillisecondTimestamp, currentTimestampZone: timezoneInfo }; Object.keys(elements).forEach(function(id) { const element document.getElementById(id); if (element && element.textContent ! elementsid) { element.textContent elementsid; } }); } // 当前日期复制功能 document.getElementById(copyBtn).addEventListener(click, async () > { copyText(currentContent); }); // 加入收藏功能 document.getElementById(favBtn).addEventListener(click, function() { const siteName document.title; const siteUrl window.location.href; // 检测浏览器是否支持添加收藏 if (window.addFavorite) { window.addFavorite(siteUrl, siteName); layer.msg(Added to browser favorites successfully!, {icon: 1}); } if (window.external && addFavorite in window.external) { window.external.addFavorite(siteUrl, document.title); layer.msg(Added to browser favorites successfully!, {icon: 1}); } else { // 部分浏览器替代方案 layer.msg(Please use browser shortcut (Ctrl+D / Cmd + D) to add to favorites!, {icon: 2}); } }); // 复制URL网站功能 document.getElementById(copyUrlBtn).addEventListener(click, function() { const url window.location.href; copyText(url); }); // 复制文本函数 function copyText(text) { if (navigator.clipboard) { navigator.clipboard.writeText(text) .then(() > { layer.msg(Copy successfully!, {icon: 1}); }) .catch(err > { layer.msg(Copy failed: + err.message, {icon: 2}); }); } else if (document.execCommand) { const textarea document.createElement(textarea); textarea.value text; textarea.style.position fixed; textarea.style.opacity 0; document.body.appendChild(textarea); textarea.select(); try { const successful document.execCommand(copy); layer.msg(successful ? Copy successfully! : Copy failed!, {icon: successful ? 1 : 2}); } catch (err) { layer.msg(Copy failed: + err.message, {icon: 2}); } finally { document.body.removeChild(textarea); } } else { layer.msg(This browser does not support the copy function. Please use another browser., {icon: 2}); } } // 文章页面特定功能 if (typeof window.articlePageFunctions ! undefined) { // 文章分享功能 $(document).on(click, #articleShareBtn, function() { var url window.location.href; var title document.title; if (navigator.share) { navigator.share({ title: title, url: url }); } else { copyText(url); } }); // 返回顶部功能 $(document).on(click, #backToTopBtn, function() { $(html, body).animate({scrollTop: 0}, 500); }); }});/script>style>/* 防抖动预设样式 */.modern-sidebar { min-height: 200px; opacity: 0; transition: opacity 0.3s ease;}.modern-sidebar.loaded { opacity: 1;}/* 时间戳值容器预设尺寸防止抖动 */.timestamp-value { min-width: 120px; display: inline-block; text-align: right;}/* 卡片内容预设最小高度 */.sidebar-card { min-height: 60px;}.timestamp-card .card-content { min-height: 160px;}.site-actions-card .card-content { min-height: 120px;}.tools-nav-card .card-content { min-height: 200px;}/* 进一步优化性能和防抖动 */.timestamp-value { font-variant-numeric: tabular-nums; letter-spacing: 0.5px;}/* 卡片动画优化 */.sidebar-card { transform: translateZ(0); backface-visibility: hidden; will-change: transform;}/* 减少重绘优化 */.timestamp-item { contain: layout style paint;}/style>style>/* Modern Sidebar CSS Variables - 温暖淡雅配色 */:root { --primary-color: #ff6b4a; --primary-hover: #ff5722; --secondary-color: #4fc3f7; --secondary-hover: #29b6f6; --success-color: #4caf50; --warning-color: #ff9800; --purple-primary: #9c27b0; --purple-secondary: #673ab7; --white: #ffffff; --text-color: #202124; --text-secondary: #5f6368; --dark-gray: #5f6368; --border-color: #e8eaed; --info-color: #2196f3; --font-family: Inter, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, sans-serif; --transition-base: 300ms cubic-bezier(0.4, 0, 0.2, 1); --shadow-lg: 0 4px 16px rgba(0, 0, 0, 0.06); --shadow-xl: 0 8px 24px rgba(0, 0, 0, 0.08);}/* Modern Sidebar Styles */.modern-sidebar { background: transparent; padding: 0; position: sticky; top: 20px; height: auto;}/* Sidebar Cards - iLovePDF风格 */.sidebar-card { background: var(--white); border-radius: 16px; box-shadow: var(--shadow-lg); margin-bottom: 24px; border: 1px solid var(--border-color); overflow: hidden; transition: all var(--transition-base);}.sidebar-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-xl); border-color: rgba(255, 107, 74, 0.2);}.card-header { padding: 20px 24px; background: var(--light-gray, #fafbfc); border-bottom: 1px solid var(--border-color); display: flex; align-items: center; gap: 12px; position: relative;}.header-icon { display: flex; align-items: center; justify-content: center; width: 36px; height: 36px; background: linear-gradient(135deg, var(--primary-color), var(--primary-hover)); border-radius: 12px; color: white; font-size: 14px; flex-shrink: 0; box-shadow: 0 2px 8px rgba(255, 107, 74, 0.2);}.card-title { font-size: 1.125rem; font-weight: 700; color: var(--text-color); margin: 0; flex: 1;}.card-content { padding: 0;}/* Timestamp Card Styles */.timestamp-card .header-icon { background: linear-gradient(135deg, var(--info-color), var(--secondary-hover));}.modern-copy-btn { padding: 6px 12px; background: var(--primary-color); color: white; border: none; border-radius: 8px; font-size: 0.75rem; font-weight: 600; cursor: pointer; transition: all 0.3s ease; display: flex; align-items: center; gap: 4px; text-transform: uppercase; letter-spacing: 0.5px;}.modern-copy-btn:hover { background: var(--primary-hover); transform: translateY(-1px); box-shadow: 0 4px 12px rgba(231, 76, 60, 0.3);}.timestamp-item { display: flex; justify-content: space-between; align-items: center; padding: 16px 24px; border-bottom: 1px solid rgba(0, 0, 0, 0.05); transition: all 0.3s ease;}.timestamp-item:last-child { border-bottom: none;}.timestamp-item:hover { background: rgba(52, 152, 219, 0.05);}.timestamp-label { font-size: 0.875rem; font-weight: 600; color: var(--dark-gray);}.timestamp-value { font-size: 0.875rem; font-weight: 700; color: var(--text-color); font-family: Monaco, Menlo, Ubuntu Mono, monospace; background: rgba(52, 152, 219, 0.1); padding: 4px 8px; border-radius: 6px;}/* Site Actions Card */.site-actions-card .header-icon { background: linear-gradient(135deg, var(--success-color), #2ecc71);}.action-item { display: flex; align-items: center; gap: 12px; padding: 16px 24px; border: none; background: none; color: var(--text-color); text-decoration: none; font-size: 0.9rem; font-weight: 500; cursor: pointer; transition: all 0.3s ease; border-bottom: 1px solid rgba(0, 0, 0, 0.05); width: 100%; text-align: left;}.action-item:last-child { border-bottom: none;}.action-item:hover { background: rgba(39, 174, 96, 0.05); color: var(--success-color); transform: translateX(4px);}.action-item i { width: 16px; text-align: center; color: var(--success-color);}/* Tools Navigation Card */.tools-nav-card .header-icon { background: linear-gradient(135deg, var(--warning-color), var(--primary-color));}.nav-item { display: flex; align-items: center; gap: 12px; padding: 16px 24px; color: var(--text-color); text-decoration: none; font-size: 0.9rem; font-weight: 500; transition: all 0.3s ease; border-bottom: 1px solid rgba(0, 0, 0, 0.05);}.nav-item:last-child { border-bottom: none;}.nav-item:hover { background: rgba(243, 156, 18, 0.05); color: var(--warning-color); transform: translateX(4px);}.nav-item i:first-child { width: 16px; text-align: center; color: var(--warning-color);}.nav-item span { flex: 1;}.nav-item i:last-child { font-size: 0.75rem; opacity: 0.5; transition: all 0.3s ease;}.nav-item:hover i:last-child { opacity: 1; transform: translateX(4px);}/* Related Articles Card */.related-articles-card .header-icon { background: linear-gradient(135deg, var(--purple-primary), var(--purple-secondary));}.article-item { display: flex; align-items: center; gap: 12px; padding: 16px 24px; color: var(--text-color); text-decoration: none; font-size: 0.9rem; font-weight: 500; transition: all 0.3s ease; border-bottom: 1px solid rgba(0, 0, 0, 0.05);}.article-item:last-child { border-bottom: none;}.article-item:hover { background: rgba(102, 126, 234, 0.05); color: var(--purple-primary); transform: translateX(4px);}.article-item i:first-child { width: 16px; text-align: center; color: var(--purple-primary);}.article-title { flex: 1; font-weight: 500;}.sidebar-card .article-title { font-size: 1rem;}.article-item i:last-child { font-size: 0.75rem; opacity: 0.5; transition: all 0.3s ease;}.article-item:hover i:last-child { opacity: 1; transform: translateX(4px);}/* Article Actions Card */.article-actions-card .header-icon { background: linear-gradient(135deg, var(--purple-primary), var(--purple-secondary));}/* Responsive Design */@media (max-width: 1024px) { .modern-sidebar { position: relative; top: 0; max-height: none; margin-top: 24px; } .sidebar-card { margin-bottom: 16px; }}@media (max-width: 768px) { .modern-sidebar { margin-top: 16px; } .sidebar-card { border-radius: 16px; } .card-header { padding: 20px; } .timestamp-item, .action-item, .nav-item, .article-item { padding: 14px 20px; }}/style>/div>
Port 443
HTTP/1.1 200 OKserver: openrestycontent-type: text/html; charsetUTF-8vary: Accept-Encodingx-powered-by: PHP/8.4.6set-cookie: csrf_cookie_name4f05cd2d4a43161b5577994865b94ece; expiresThu, 20 Nov 2025 15:19:26 GMT; Max-Age7200; path/; HttpOnly; SameSiteLaxstrict-transport-security: max-age31536000Cache-Control: no-cache, no-store, max-age0Transfer-Encoding: chunkedConnection: keep-aliveDate: Thu, 20 Nov 2025 13:19:26 GMTEO-LOG-UUID: 903423122126721744EO-Cache-Status: MISS !DOCTYPE html>html langen>head> meta charsetUTF-8> meta http-equivcontent-type contenttext/html; charsetUTF-8> title>Unix Timestamp Converter Online - Unix Epoch/title> meta namedescription contentMultiple unix timestamp converter and datetime converter online, supports timestamps in seconds, milliseconds, and datetime in UTC, in local timezone> meta namekeywords contentmultiple converter, unix timestamp, epoch time, datetime, timestamp, converter /> meta nameviewport contentwidthdevice-width, initial-scale1.0, minimum-scale1.0, maximum-scale1.0, user-scalableno> meta nameauthor contentunixepoch.net> meta namegenerator contentunixepoch.net> meta namemsvalidate.01 content6038BA747A665B5B349A47E01B2518A9 /> link relshortcut icon typeimage/x-icon href/favicon.ico> link relcanonical hrefhttps://unixepoch.net/en> !-- Alternate Language Links (动态注入) --> link relalternate hreflangen hrefhttps://unixepoch.net/en />link relalternate hreflangzh hrefhttps://unixepoch.net/zh />link relalternate hreflanghi hrefhttps://unixepoch.net/hi />link relalternate hreflanges hrefhttps://unixepoch.net/es />link relalternate hreflangar hrefhttps://unixepoch.net/ar />link relalternate hreflangru hrefhttps://unixepoch.net/ru />link relalternate hreflangpt hrefhttps://unixepoch.net/pt />link relalternate hreflangfr hrefhttps://unixepoch.net/fr />link relalternate hreflangit hrefhttps://unixepoch.net/it />link relalternate hreflangja hrefhttps://unixepoch.net/ja />link relalternate hreflangms hrefhttps://unixepoch.net/ms />link relalternate hreflangde hrefhttps://unixepoch.net/de />link relalternate hreflangnl hrefhttps://unixepoch.net/nl />link relalternate hreflangnb hrefhttps://unixepoch.net/nb />link relalternate hreflangda hrefhttps://unixepoch.net/da />link relalternate hreflangvi hrefhttps://unixepoch.net/vi />link relalternate hreflangx-default hrefhttps://unixepoch.net/ /> !-- 第三方CSS --> link relstylesheet hrefhttps://cdnjs.cloudflare.com/ajax/libs/layui/2.9.21/css/layui.min.css integritysha512-kW6RZtTRD9zu/RdHOJO/PZE8efgEG+I090ZlgVH6pJ5yXJbz63uTPXvYe/C4GDqtOvu0SyGIpq9cJdUE24oV5g crossoriginanonymous referrerpolicyno-referrer /> link relstylesheet hrefhttps://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css integritysha512-DTOQO9RWCH3ppGqcWaEA1BIZOC6xxalwEsw9c2QQeAIftl+Vegovlnee1c9QX4TctnWMn13TZye+giMm8e2LwA crossoriginanonymous referrerpolicyno-referrer /> !-- 下拉菜单修复样式 --> link rel\stylesheet\ href\/dropdown-fix.css\> !-- 现代化样式系统 --> style> /* CSS 变量定义 - 温暖淡雅风格 */ :root { /* 主色调 - 温暖的橙红色系 */ --primary-color: #ff6b4a; --primary-hover: #ff5722; --primary-light: rgba(255, 107, 74, 0.08); --primary-ultra-light: rgba(255, 107, 74, 0.04); --secondary-color: #4fc3f7; --secondary-hover: #29b6f6; /* 中性色 - 温暖柔和 */ --white: #ffffff; --light-gray: #fafbfc; --medium-gray: #e8eaed; --dark-gray: #5f6368; --text-color: #202124; --text-secondary: #5f6368; --border-color: #e8eaed; --background-color: #ffffff; /* 功能色 - 温暖色调 */ --success-color: #4caf50; --warning-color: #ff9800; --danger-color: #ff5722; --info-color: #2196f3; /* 阴影 - 柔和自然 */ --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.04); --shadow-md: 0 4px 16px rgba(0, 0, 0, 0.06); --shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.08); --shadow-xl: 0 16px 48px rgba(0, 0, 0, 0.10); /* 边框圆角 - iLovePDF风格 */ --radius-sm: 8px; --radius-md: 12px; --radius-lg: 16px; --radius-xl: 24px; /* 字体 */ --font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif; --font-mono: SF Mono, Monaco, Cascadia Code, Roboto Mono, Consolas, Courier New, monospace; } /* 全局样式重置 */ * { margin: 0; padding: 0; box-sizing: border-box; } html { -webkit-text-size-adjust: 100%; font-feature-settings: normal; scroll-behavior: smooth; } body { font-family: var(--font-family); color: var(--text-color); line-height: 1.6; background-color: var(--background-color); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } code, kbd, pre, samp { font-family: var(--font-mono); } a { color: var(--primary-color); text-decoration: none; transition: color 0.2s ease; } a:hover { color: var(--primary-hover); } .margin-top-10px { margin-top: 10px; } .margin-top-20px { margin-top: 20px; } .margin-bottom-10px { margin-bottom: 10px; } .margin-bottom-20px { margin-bottom: 20px; } /* 现代化导航条 - 紧凑优化设计 */ .header { background: var(--white); padding: 12px 20px; box-shadow: var(--shadow-md); display: flex; justify-content: space-between; align-items: center; position: sticky; top: 0; z-index: 1000; /* 提高header的z-index */ border-bottom: 1px solid var(--border-color); backdrop-filter: blur(20px) saturate(180%); background-color: rgba(255, 255, 255, 0.95); overflow: visible; /* 确保header不会裁剪下拉菜单 */ } .header .nav-title { font-size: 28px; font-weight: 800; background: linear-gradient(135deg, var(--primary-color), #ff8a65); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; flex-shrink: 0; margin-right: 16px; display: flex; align-items: center; gap: 0; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); cursor: pointer; line-height: 1; } .header .nav-title:hover { transform: scale(1.05); filter: brightness(1.1); } /* UnixEpoch 时钟表盘Logo设计 - 精工小尺寸 */ .header .nav-title::before { content: ; width: 28px; height: 28px; background: linear-gradient(135deg, #ff6b4a 0%, #4fc3f7 100%); border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; position: relative; box-shadow: 0 3px 10px rgba(255, 107, 74, 0.3); margin-right: 6px; border: 2px solid rgba(255, 255, 255, 0.9); vertical-align: middle; } /* 时钟刻度 - 调整尺寸 */ .header .nav-title::after { content: ; position: absolute; left: 4px; width: 20px; height: 20px; border: 1.5px solid rgba(255, 255, 255, 0.4); border-radius: 50%; background: radial-gradient(circle at center, rgba(255,255,255,0.8) 0.8px, transparent 0.8px), conic-gradient(from 0deg, transparent 85deg, rgba(255,255,255,0.6) 90deg, transparent 95deg, transparent 175deg, rgba(255,255,255,0.6) 180deg, transparent 185deg, transparent 265deg, rgba(255,255,255,0.6) 270deg, transparent 275deg); } /* 动态指针 */ .header .nav-title { position: relative; } .header .nav-title:before { z-index: 1; } /* 时针 */ .header .nav-title:after { z-index: 2; } /* 分针动画 */ .header .nav-title::before { animation: clockTick 60s linear infinite; } /* 中心圆点 */ .header .nav-title::after::before { content: ; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 3px; height: 3px; background: white; border-radius: 50%; z-index: 3; } @keyframes clockTick { 0% { box-shadow: 0 3px 10px rgba(255, 107, 74, 0.3), inset 0 -6px 0 -4px rgba(255, 255, 255, 0.8); } 25% { box-shadow: 0 3px 10px rgba(255, 107, 74, 0.3), inset 6px 0 0 -4px rgba(255, 255, 255, 0.8); } 50% { box-shadow: 0 3px 10px rgba(255, 107, 74, 0.3), inset 0 6px 0 -4px rgba(255, 255, 255, 0.8); } 75% { box-shadow: 0 3px 10px rgba(255, 107, 74, 0.3), inset -6px 0 0 -4px rgba(255, 255, 255, 0.8); } 100% { box-shadow: 0 3px 10px rgba(255, 107, 74, 0.3), inset 0 -6px 0 -4px rgba(255, 255, 255, 0.8); } } .header .nav-title:hover::before { animation-duration: 2s; box-shadow: 0 4px 16px rgba(255, 107, 74, 0.5); } .header .nav-links-container { flex: 1; margin-right: 12px; position: relative; height: auto; /* 高度自适应内容 */ overflow: visible; /* 完全可见,不裁剪下拉菜单 */ /* 移除所有overflow和滚动相关设置,让新导航条自己处理滚动 */ } /* 移除滚动条样式,新导航条自己处理 */ /* 移除滚动指示器,新导航条自己处理滚动 */ .header .nav-links { display: flex; white-space: nowrap; padding: 4px 0; gap: 4px; } /* 导航分类样式 */ .nav-category { position: relative; display: inline-block; z-index: 1; /* 确保分类容器有合适的层级 */ } .nav-category > a { padding: 10px 16px; color: var(--text-secondary); text-decoration: none; border-radius: var(--radius-sm); font-weight: 500; font-size: 14px; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); position: relative; white-space: nowrap; display: flex; align-items: center; gap: 6px; } .nav-category > a::after { content: \25BC; font-size: 10px; transition: transform 0.3s ease; opacity: 0.6; } .nav-category:hover > a::after { transform: rotate(180deg); } .header .nav-links a { padding: 10px 16px; color: var(--text-secondary); text-decoration: none; border-radius: var(--radius-sm); font-weight: 500; font-size: 14px; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); position: relative; white-space: nowrap; } /* 下拉菜单样式 */ .dropdown-menu { position: absolute; top: 100%; left: 0; background: var(--white); border-radius: var(--radius-md); box-shadow: var(--shadow-lg); padding: 8px 0; min-width: 200px; opacity: 0; visibility: hidden; transform: translateY(-10px); transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); border: 1px solid var(--border-color); z-index: 9999; /* 提高z-index确保在最顶层 */ pointer-events: none; /* 隐藏时不响应鼠标事件 */ } .nav-category:hover .dropdown-menu { opacity: 1; visibility: visible; transform: translateY(0); pointer-events: auto; /* 显示时恢复鼠标事件 */ } .dropdown-menu a { display: block; padding: 12px 20px; color: var(--text-color); text-decoration: none; font-size: 14px; font-weight: 400; transition: all 0.2s ease; border-radius: 0; } .dropdown-menu a:hover { background-color: var(--primary-ultra-light); color: var(--primary-color); transform: none; box-shadow: none; } .dropdown-menu a.active { background: linear-gradient(135deg, var(--primary-color), var(--primary-hover)); color: var(--white); font-weight: 600; } .header .nav-links a:hover { background-color: var(--primary-ultra-light); color: var(--primary-color); transform: translateY(-2px); box-shadow: var(--shadow-sm); } .header .nav-links a.active { background: linear-gradient(135deg, var(--primary-color), var(--primary-hover)); color: var(--white); font-weight: 600; box-shadow: var(--shadow-md); transform: translateY(-1px); } .header .nav-links a.active::after { content: ; position: absolute; bottom: -12px; left: 50%; transform: translateX(-50%); width: 8px; height: 8px; background: linear-gradient(135deg, var(--primary-color), var(--primary-hover)); border-radius: 50%; box-shadow: 0 2px 8px rgba(255, 107, 74, 0.3); } .header .language-select { padding: 10px 36px 10px 32px; border: 2px solid transparent; border-radius: var(--radius-md); background: linear-gradient(135deg, var(--light-gray, #fafbfc), var(--white)); color: var(--text-color); font-size: 13px; font-weight: 600; width: 100%; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); cursor: pointer; appearance: none; background-image: url(data:image/svg+xml,%3csvg xmlnshttp://www.w3.org/2000/svg fillnone viewBox0 0 20 20%3e%3cpath stroke%23ff6b4a stroke-linecapround stroke-linejoinround stroke-width2 dm6 8 4 4 4-4/%3e%3c/svg%3e), linear-gradient(135deg, var(--light-gray, #fafbfc), var(--white)); background-position: right 10px center, 0 0; background-repeat: no-repeat, no-repeat; background-size: 16px, 100%; box-shadow: var(--shadow-sm); position: relative; } .header .language-select:hover { border-color: var(--primary-color); box-shadow: var(--shadow-md); transform: translateY(-2px); background: linear-gradient(135deg, var(--white), var(--light-gray, #fafbfc)); } .header .language-select:focus { outline: none; border-color: var(--primary-color); box-shadow: 0 0 0 4px rgba(255, 107, 74, 0.15); transform: translateY(-1px); } .header .language-select::before { content: 🌐; position: absolute; left: 10px; top: 50%; transform: translateY(-50%); font-size: 14px; opacity: 0.7; } /* 语言选择区域 */ .header .nav-lang { width: 110px; flex-shrink: 0; text-align: left; position: relative; z-index: 10; } .header .lang-form { width: 100%; display: inline-block; } /* 汉堡菜单按钮 */ .menu-toggle { display: none; cursor: pointer; font-size: 24px; color: #89216b; } /* 侧边栏导航 */ .mobile-sidebar { position: fixed; top: 0; left: -250px; width: 250px; height: 100%; background-color: #f8f9fa; z-index: 1000; transition: left 0.3s ease; box-shadow: 2px 0 5px rgba(0,0,0,0.1); overflow-y: auto; padding: 20px; } .mobile-sidebar.active { left: 0; } .sidebar-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; padding-bottom: 10px; border-bottom: 1px solid #ddd; } .sidebar-header h3 { color: #89216b; margin: 0; } .close-sidebar { font-size: 24px; cursor: pointer; color: #89216b; } .sidebar-nav { margin-bottom: 30px; } .sidebar-nav a { display: block; padding: 10px 0; color: #89216b; text-decoration: none; border-bottom: 1px solid #eee; } .sidebar-nav a.active { font-weight: bold; } .sidebar-category { margin-bottom: 20px; } .sidebar-category h4 { margin: 15px 0 10px 0; color: var(--text-color); font-size: 14px; font-weight: 600; display: flex; align-items: center; gap: 8px; padding-bottom: 8px; border-bottom: 2px solid var(--primary-color); } .sidebar-category h4 i { color: var(--primary-color); font-size: 16px; } .sidebar-category a { margin-left: 20px; font-size: 14px; border-bottom: 1px solid #f0f0f0; } .sidebar-lang { margin-top: 20px; } .sidebar-lang h4 { margin-bottom: 10px; color: #666; } /* 遮罩层 */ .sidebar-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0,0,0,0.5); z-index: 999; display: none; } /* 现代化主区域布局 */ .main-container { max-width: 1200px; margin: 0 auto; padding: 32px 24px; display: flex; gap: 32px; min-height: calc(100vh - 200px); } .left-panel { flex: 1; min-width: 0; /* 防止flex子项溢出 */ } .right-panel { width: 360px; /* flex-shrink: 0; */ } /* 工具卡片基础样式 */ .tool-card { background: var(--white); border-radius: var(--radius-lg); box-shadow: var(--shadow-md); padding: 32px; margin-bottom: 32px; border: 1px solid var(--border-color); transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); position: relative; overflow: hidden; } .tool-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-lg); border-color: var(--primary-color); } .tool-card::before { content: ; position: absolute; top: 0; left: 0; right: 0; height: 4px; background: linear-gradient(90deg, var(--primary-color), var(--secondary-color)); opacity: 0; transition: opacity 0.3s ease; } .tool-card:hover::before { opacity: 1; } /* 响应式适配 */ @media (max-width: 768px) { .main-container { flex-direction: column; } .left-panel { width: 100%; } .right-panel { width: 100%; } .header .nav-links-container, .header .nav-lang { display: none; } .menu-toggle { display: block; } } \n /* 额外的下拉菜单修复样式 */\n .nav-category:hover .dropdown-menu {\n box-shadow: 0 10px 25px rgba(0, 0, 0, 0.15), 0 6px 12px rgba(0, 0, 0, 0.1) !important;\n }\n \n /* 确保下拉菜单在桌面端正确定位 */\n @media (min-width: 769px) {\n .dropdown-menu {\n position: absolute !important;\n z-index: 9999 !important;\n }\n }\n \n /* 移动端下拉菜单优化 */\n @media (max-width: 768px) {\n .nav-category .dropdown-menu {\n position: fixed !important;\n top: 60px !important;\n left: 50% !important;\n transform: translateX(-50%) translateY(-10px) !important;\n width: 90vw;\n max-width: 300px;\n z-index: 10000 !important;\n }\n \n .nav-category:hover .dropdown-menu {\n transform: translateX(-50%) translateY(0) !important;\n }\n }\n /style> !-- 额外的CSS (动态注入) --> style> /* 导航条 */ .header { background: #f8f9fa; padding: 15px 20px; box-shadow: 0 2px 4px rgba(0,0,0,0.1); display: flex; justify-content: space-between; align-items: center; } .header .nav-title { font-size: 24px; font-weight: bold; color: #111827; } .header .nav-links a { margin-left: 20px; color: #111827; text-decoration: none; } .header .language-select { padding: 5px 10px; border: 1px solid #dee2e6; border-radius: 4px; }/style>style> /* 全局样式 */ * { margin: 0; padding: 0; box-sizing: border-box; } html { -webkit-text-size-adjust:100%; font-feature-settings:normal; font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji; } a { color: #007bff; } a:hover { color: #89CFF0; } /* 网站主区域 */ .main-container { display: flex; max-width: 1200px; margin: 20px auto; padding: 0 20px; gap: 20px; } .left-panel { flex: 1; } .right-panel { width: 380px; } /* 响应式适配 */ @media (max-width: 768px) { .main-container { flex-direction: column; margin: 10px auto; padding: 0 15px; } .left-panel { width: 100%; } .right-panel { width: 100%; } .custom-navbar { padding: 15px; } .custom-navbar .nav-links { display: none; } }/style>style> /* 右边栏当前时间模块 */ .current-timestamp-box { position: relative; background: #fff; /* border: 1px solid #e6e6e6; */ border-radius: 6px; padding: 20px; margin-bottom: 20px; box-shadow: 0 2px 5px rgba(0,0,0,0.1); } .current-timestamp-box .info-item-tab-title { font-size: 20px; line-height: 24px; vertical-align: middle; } .current-timestamp-box .info-item-title { font-size: 14px; line-height: 18px; vertical-align: middle; } .current-timestamp-box .copy-btn { position: absolute; right: 5px; top: 0px; background-color: #89216b; } .current-timestamp-box .info-item { font-size: 16px; margin: 10px 20px 10px 0px; } .current-timestamp-box .info-item span { font-weight: bold; font-size: 18px; } .right-panel .site-card-box { border-radius: 6px; padding: 20px; margin-bottom: 20px; box-shadow: 0 2px 5px rgba(0,0,0,0.1); } /* 右边栏 */ .right-panel .layui-card { margin-bottom: 15px; } .right-panel .layui-card .card-item-pointer { cursor: pointer; } .right-panel .layui-card .card-item-pointer:hover { background-color: #f5f5f5; } .right-panel .doc-list { padding: 0 15px 15px; } .right-panel .doc-list li { margin: 10px 0; list-style: none; cursor: pointer; } .right-panel .doc-list li span { color: #999; margin-right: 5px; }/style>style> .layui-footer { text-align: center; padding: 20px; color: #999; border-top: 1px solid #e6e6e6; } .layui-footer a { margin-right: 10px; }/style>style>/* 舒适的配色系统 - 柔和色调 */:root { /* 主色调 - 温和的蓝绿色 */ --primary-color: #4a90a4; --primary-hover: #357a8a; --primary-light: rgba(74, 144, 164, 0.1); /* 辅助颜色 */ --success-color: #52c196; --success-light: rgba(82, 193, 150, 0.1); --success-hover: #45a085; /* 中性色调 */ --background-color: #fafbfc; --white: #ffffff; --text-color: #2c3e50; --dark-gray: #5a6c7d; --muted-text: #7f8c8d; --border-color: #e1e8ed; --light-gray: #f8f9fa; /* 警告和信息颜色 */ --warning-color: #f39c12; --warning-light: rgba(243, 156, 18, 0.1); --info-color: #3498db; --info-light: rgba(52, 152, 219, 0.1); /* 边框半径 */ --radius-sm: 6px; --radius-md: 10px; --radius-lg: 14px; --radius-xl: 18px; /* 阴影系统 */ --shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.04); --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.08); --shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.12); --shadow-xl: 0 12px 32px rgba(0, 0, 0, 0.16); /* 字体 */ --font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Noto Sans, sans-serif;}/* 现代化时间戳转换页面样式 - 舒适风格 */.timestamp-date-page { min-height: 100vh; background: var(--background-color); padding: 0;}/* 极简紧凑tab导航栏 */.features-overview { background: rgba(255, 255, 255, 0.7); border: 1px solid rgba(0, 0, 0, 0.06); border-radius: 8px; padding: 8px; margin-bottom: 16px; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05); backdrop-filter: blur(5px);}/* 移除装饰性背景 *//* 隐藏标题区域 */.overview-header { display: none;}.features-grid { display: flex; gap: 4px; margin-bottom: 0;}.feature-card { flex: 1; background: rgba(255, 255, 255, 0.8); border: 1px solid rgba(0, 0, 0, 0.08); border-radius: 6px; padding: 8px 12px; cursor: pointer; transition: all 0.2s ease; position: relative; text-align: center; font-size: 0.85rem;}.feature-card:hover { background: var(--white); border-color: var(--primary-color); transform: translateY(-1px); box-shadow: 0 2px 8px rgba(74, 144, 164, 0.15);}.feature-icon { width: 18px; height: 18px; display: inline-flex; align-items: center; justify-content: center; margin-right: 6px; font-size: 12px; color: var(--primary-color); transition: all 0.2s ease;}.feature-icon.single { color: var(--success-color);}.feature-icon.batch { color: var(--warning-color);}.feature-card:hover .feature-icon { transform: scale(1.1);}/* 移除装饰性指示器 */.feature-title { font-size: 0.85rem; font-weight: 500; margin: 0; color: var(--text-color); display: inline;}/* 隐藏描述 */.feature-desc { display: none;}/* 隐藏徽章 */.feature-badge { display: none;}/* 隐藏导航提示 */.quick-nav-hint { display: none;}.quick-nav-hint i { font-size: 16px; color: var(--primary-color); animation: bounce 2s infinite;}.quick-nav-hint span { font-size: 0.8rem; color: var(--muted-text);}@keyframes bounce { 0%, 20%, 50%, 80%, 100% { transform: translateY(0); } 40% { transform: translateY(-6px); } 60% { transform: translateY(-3px); }}/* 工具间导航样式 */.tools-navigation { display: flex; justify-content: center; margin: 32px 0;}.nav-btn { background: linear-gradient(135deg, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.8)); border: 2px solid var(--primary-color); border-radius: var(--radius-lg); padding: 20px 32px; cursor: pointer; transition: all 0.3s ease; display: flex; flex-direction: column; align-items: center; gap: 8px; min-width: 200px; text-align: center; box-shadow: var(--shadow-md); position: relative; overflow: hidden;}.nav-btn::before { content: ; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(74, 144, 164, 0.1), transparent); transition: left 0.5s ease;}.nav-btn:hover::before { left: 100%;}.nav-btn:hover { background: var(--primary-color); color: var(--white); transform: translateY(-2px); box-shadow: var(--shadow-lg);}.nav-btn i { font-size: 20px; color: var(--primary-color); transition: all 0.3s ease;}.nav-btn:hover i { color: var(--white); transform: scale(1.1);}.nav-btn span { font-size: 1rem; font-weight: 600; color: var(--text-color); transition: all 0.3s ease;}.nav-btn:hover span { color: var(--white);}.nav-hint { font-size: 0.875rem; color: var(--muted-text); transition: all 0.3s ease;}.nav-btn:hover .nav-hint { color: rgba(255, 255, 255, 0.8);}/* 滚动进度指示器样式 */.scroll-progress-indicator { position: fixed; top: 50%; right: 20px; transform: translateY(-50%); z-index: 1000; background: var(--white); border-radius: var(--radius-lg); box-shadow: var(--shadow-lg); padding: 8px; border: 1px solid var(--border-color); opacity: 0.9; transition: all 0.3s ease;}.scroll-progress-indicator:hover { opacity: 1; transform: translateY(-50%) scale(1.05);}.progress-bar { width: 0%; height: 3px; background: linear-gradient(90deg, var(--success-color), var(--primary-color)); border-radius: 2px; transition: width 0.3s ease; margin-bottom: 8px;}.progress-sections { display: flex; flex-direction: column; gap: 6px;}.section-indicator { width: 32px; height: 32px; border-radius: 50%; background: var(--light-gray); color: var(--muted-text); display: flex; align-items: center; justify-content: center; font-size: 0.85rem; font-weight: 600; cursor: pointer; transition: all 0.3s ease; border: 2px solid transparent;}.section-indicator:hover { background: var(--primary-light); color: var(--primary-color); border-color: var(--primary-color); transform: scale(1.1);}.section-indicator.active { background: var(--primary-color); color: var(--white); box-shadow: 0 4px 12px rgba(74, 144, 164, 0.3);}/* 键盘快捷键提示样式 */.keyboard-shortcut-hint { position: fixed; top: 100px; right: 20px; z-index: 1100; background: var(--white); border-radius: var(--radius-lg); box-shadow: var(--shadow-xl); padding: 0; border: 1px solid var(--border-color); max-width: 280px; animation: slideInRight 0.5s ease-out;}.hint-content { padding: 20px;}.hint-content h4 { margin: 0 0 12px; color: var(--text-color); font-size: 1rem;}.hint-content p { margin: 8px 0; font-size: 0.9rem; color: var(--dark-gray); display: flex; align-items: center; gap: 8px;}.hint-content kbd { background: var(--light-gray); border: 1px solid var(--border-color); border-radius: 4px; padding: 2px 8px; font-size: 0.8rem; font-family: monospace; color: var(--text-color); min-width: 60px; text-align: center;}.hint-content button { background: var(--primary-color); color: var(--white); border: none; border-radius: var(--radius-md); padding: 8px 16px; font-size: 0.85rem; cursor: pointer; transition: all 0.3s ease; margin-top: 12px; width: 100%;}.hint-content button:hover { background: var(--primary-hover); transform: translateY(-1px);}@keyframes slideInRight { from { transform: translateX(100%); opacity: 0; } to { transform: translateX(0); opacity: 1; }}/* 焦点增强样式 */.timestamp-tool.focus-highlight { box-shadow: 0 0 0 3px rgba(74, 144, 164, 0.3) !important;}/* 工具卡片设计 - iLovePDF风格 */.timestamp-tool { background: rgba(255, 255, 255, 0.8); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); margin-bottom: 20px; overflow: hidden; border: 1px solid rgba(0, 0, 0, 0.04); transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);}.timestamp-tool:hover { box-shadow: var(--shadow-lg); transform: translateY(-4px); border-color: rgba(74, 144, 164, 0.3);}.tool-header { background: rgba(248, 250, 252, 0.6); color: var(--text-color); padding: 12px 20px; border-bottom: 1px solid rgba(0, 0, 0, 0.06); display: flex; flex-direction: row; align-items: center; gap: 12px; text-align: left;}/* 移除装饰性背景 */.tool-header .tool-icon { display: flex; align-items: center; justify-content: center; width: 32px; height: 32px; background: var(--primary-color); color: var(--white); border-radius: 8px; margin: 0; font-size: 16px; transition: all 0.2s ease;}.tool-header .tool-icon:hover { transform: scale(1.05); background: var(--primary-hover);}.tool-header h2 { margin: 0; font-size: 1.125rem; font-weight: 600; color: var(--text-color); letter-spacing: 0;}.tool-content { padding: 20px; display: flex; flex-direction: column; gap: 20px;}/* 现代化表单设计 - iLovePDF风格 */.conversion-section { background: rgba(255, 255, 255, 0.5); border-radius: var(--radius-md); padding: 20px; margin-bottom: 20px; border: 1px solid rgba(0, 0, 0, 0.03);}.section-header { display: flex; align-items: center; gap: 12px; margin-bottom: 20px; padding-bottom: 12px; border-bottom: 2px solid var(--primary-light);}.section-header .section-icon { display: flex; align-items: center; justify-content: center; width: 32px; height: 32px; background: var(--primary-color); color: var(--white); border-radius: 8px; font-size: 16px;}.section-header h3 { margin: 0; font-size: 1.125rem; font-weight: 600; color: var(--text-color);}.form-group { display: flex; flex-direction: column; gap: 6px; margin-bottom: 16px;}.form-label { font-size: 0.875rem; font-weight: 500; color: var(--dark-gray); margin-bottom: 4px;}.modern-input,.modern-textarea,.modern-select { width: 100%; padding: 12px 16px; border: 2px solid var(--border-color); border-radius: var(--radius-md); font-size: 1rem; background: var(--white); transition: all 0.3s ease; font-family: Inter, -apple-system, BlinkMacSystemFont, sans-serif;}.modern-input:focus,.modern-textarea:focus,.modern-select:focus { outline: none; border-color: var(--primary-color); box-shadow: 0 0 0 3px var(--primary-light); transform: translateY(-1px);}.modern-input:hover,.modern-textarea:hover,.modern-select:hover { border-color: var(--primary-color);}.modern-textarea { min-height: 120px; resize: vertical; line-height: 1.5;}.convert-btn { background: linear-gradient(135deg, var(--primary-color) 0%, var(--primary-hover) 100%); color: var(--white) !important; border: none; border-radius: var(--radius-lg); padding: 14px 32px; font-size: 1rem; font-weight: 600; cursor: pointer; transition: all 0.3s ease; position: relative; overflow: hidden; text-transform: uppercase; letter-spacing: 0.5px; min-height: 52px;}.convert-btn::before { content: ; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent); transition: left 0.5s ease;}.convert-btn:hover::before { left: 100%;}.convert-btn:hover { transform: translateY(-2px); box-shadow: var(--shadow-lg); background: linear-gradient(135deg, var(--primary-hover) 0%, var(--success-hover) 100%);}.convert-btn:active { transform: translateY(0);}/* 控制面板布局 */.control-panel { display: grid; grid-template-columns: 1fr auto auto; gap: 16px; align-items: center; margin-bottom: 16px;}@media (max-width: 640px) { .control-panel { grid-template-columns: 1fr; gap: 12px; } .control-panel .convert-btn { order: 3; width: 100%; } .control-panel select { order: 1; }}/* 结果显示区域 */.result-display { background: var(--success-light); border: 2px solid var(--success-color); border-radius: var(--radius-lg); padding: 16px; font-family: Monaco, Consolas, monospace; font-size: 1rem; color: var(--text-color); min-height: 52px; display: flex; align-items: center; position: relative;}.result-display.empty { background: var(--light-gray); border-color: var(--border-color); color: var(--muted-text); font-style: italic;}/* 结果输出字段样式 */.result-output { background: var(--success-light) !important; border-color: var(--success-color) !important; color: var(--text-color) !important; font-family: Monaco, Consolas, monospace; font-weight: 600; cursor: text;}.result-output:focus { background: var(--success-light) !important; border-color: var(--success-color) !important; box-shadow: 0 0 0 3px rgba(39, 174, 96, 0.1) !important;}.result-output::placeholder { color: var(--muted-text); font-style: italic; font-family: var(--font-family);}/* 结果容器和复制按钮 */.result-container { position: relative; display: flex; align-items: center;}.result-container .result-output { flex: 1; padding-right: 50px;}.copy-result-btn { position: absolute; right: 12px; top: 50%; transform: translateY(-50%); background: transparent; border: none; color: var(--success-color); font-size: 16px; cursor: pointer; padding: 8px; border-radius: 4px; transition: all 0.3s ease; opacity: 0; pointer-events: none;}.result-container:hover .copy-result-btn,.result-container .result-output:not(:placeholder-shown) ~ .copy-result-btn { opacity: 1; pointer-events: all;}.copy-result-btn:hover { background: var(--success-light); color: var(--success-color); transform: translateY(-50%) scale(1.1);}/* 现代化表格设计 */.modern-table { width: 100%; border-collapse: collapse; background: var(--white); border-radius: var(--radius-lg); overflow: hidden; box-shadow: var(--shadow-sm); margin-top: 20px;}.modern-table thead { background: linear-gradient(135deg, var(--primary-color) 0%, var(--primary-hover) 100%); color: var(--white);}.modern-table th,.modern-table td { padding: 16px 20px; text-align: left; border-bottom: 1px solid rgba(0, 0, 0, 0.05);}.modern-table th { font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; font-size: 0.875rem;}.modern-table tbody tr { transition: background-color 0.2s ease;}.modern-table tbody tr:hover { background: var(--light-gray);}.modern-table tbody tr:last-child td { border-bottom: none;}/* 信息卡片设计 */.info-card { background: var(--white); border-radius: var(--radius-xl); padding: 32px; margin-bottom: 24px; box-shadow: var(--shadow-md); border: 1px solid rgba(0, 0, 0, 0.05); transition: all 0.3s ease;}.info-card:hover { box-shadow: var(--shadow-lg); transform: translateY(-2px);}.info-card h2,.info-card h3 { color: var(--text-color); margin-bottom: 16px;}.info-card h2 { font-size: 1.5rem; font-weight: 700; border-bottom: 3px solid var(--primary-color); padding-bottom: 12px; display: inline-block;}.info-card h3 { font-size: 1.25rem; font-weight: 600; position: relative; padding-left: 20px;}.info-card h3::before { content: ; position: absolute; left: 0; top: 50%; transform: translateY(-50%); width: 4px; height: 20px; background: var(--primary-color); border-radius: 2px;}.info-card p { line-height: 1.7; color: var(--text-color); font-size: 1rem;}/* FAQ样式优化 */.faq-item { background: linear-gradient(145deg, #f8f9fa 0%, #ffffff 100%); border-radius: var(--radius-lg); padding: 24px; margin-bottom: 16px; border: 1px solid rgba(0, 0, 0, 0.05); transition: all 0.3s ease; position: relative; overflow: hidden;}.faq-item::before { content: ; position: absolute; left: 0; top: 0; width: 4px; height: 100%; background: var(--primary-color); transform: scaleY(0); transition: transform 0.3s ease;}.faq-item:hover { box-shadow: var(--shadow-md); transform: translateY(-2px);}.faq-item:hover::before { transform: scaleY(1);}.faq-question { font-size: 1.125rem; font-weight: 600; color: var(--text-color); margin-bottom: 12px; position: relative; padding-left: 32px;}.faq-question::before { content: \f059; font-family: Font Awesome 5 Free; font-weight: 900; position: absolute; left: 0; top: 0; color: var(--primary-color); font-size: 20px;}.faq-answer { color: var(--dark-gray); line-height: 1.6; padding-left: 32px; position: relative;}.faq-answer::before { content: \f0a4; font-family: Font Awesome 5 Free; font-weight: 900; position: absolute; left: 0; top: 2px; color: var(--success-color); font-size: 16px;}/* 响应式设计优化 */@media (max-width: 1024px) { .control-panel { grid-template-columns: 1fr; gap: 12px; } .control-panel .convert-btn { order: 3; } .tool-content { padding: 24px; } .result-container .result-output { padding-right: 45px; } .copy-result-btn { right: 8px; font-size: 14px; padding: 6px; }}@media (max-width: 768px) { .tool-content { padding: 20px; gap: 20px; } .tool-header { padding: 10px 16px; gap: 10px; } .tool-header .tool-icon { width: 28px; height: 28px; font-size: 14px; } .tool-header h2 { font-size: 1rem; } .conversion-section { padding: 20px; } .control-panel { grid-template-columns: 1fr; gap: 12px; } .convert-btn { width: 100%; padding: 16px; min-height: 56px; } .info-card { padding: 24px; } .info-card h2 { font-size: 1.25rem; } .modern-table th, .modern-table td { padding: 12px 16px; font-size: 0.875rem; }}@media (max-width: 480px) { .tool-content { padding: 16px; } .tool-header { padding: 8px 12px; gap: 8px; } .tool-header .tool-icon { width: 24px; height: 24px; font-size: 12px; } .tool-header h2 { font-size: 0.95rem; } /* 功能预览区响应式 */ .features-overview { padding: 20px 24px 16px 24px; margin-bottom: 20px; } .main-title { font-size: 1.5rem; } .main-subtitle { font-size: 0.9rem; } .features-grid { grid-template-columns: 1fr; gap: 12px; } .feature-card { padding: 16px 14px; } .feature-icon { width: 44px; height: 44px; font-size: 18px; margin-bottom: 12px; } .feature-title { font-size: 1rem; } .feature-desc { font-size: 0.8rem; } .tools-navigation { margin: 24px 0; } .nav-btn { min-width: 180px; padding: 16px 24px; } /* 移动端滚动指示器优化 */ .scroll-progress-indicator { right: 12px; padding: 6px; } .section-indicator { width: 28px; height: 28px; font-size: 0.8rem; } .keyboard-shortcut-hint { top: 80px; right: 12px; left: 12px; max-width: none; } .conversion-section { padding: 16px; } .info-card { padding: 20px; } .modern-table th, .modern-table td { padding: 8px 12px; font-size: 0.8rem; }}/* 列表和步骤样式 */.step-list { list-style: none; counter-reset: step-counter; margin: 20px 0; padding: 0;}.step-list li { counter-increment: step-counter; position: relative; padding: 16px 24px 16px 60px; margin-bottom: 16px; background: linear-gradient(145deg, #ffffff 0%, #f8f9fa 100%); border-radius: var(--radius-lg); border: 1px solid rgba(0, 0, 0, 0.05); transition: all 0.3s ease; line-height: 1.6; color: var(--text-color);}.step-list li:hover { box-shadow: var(--shadow-md); transform: translateX(4px);}.step-list li::before { content: counter(step-counter); position: absolute; left: 20px; top: 50%; transform: translateY(-50%); width: 32px; height: 32px; background: linear-gradient(135deg, var(--primary-color) 0%, var(--primary-hover) 100%); color: var(--white); border-radius: 50%; display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 0.875rem; box-shadow: 0 2px 8px rgba(74, 144, 164, 0.3);}.bullet-list { list-style: none; margin: 20px 0; padding: 0;}.bullet-list li { position: relative; padding: 12px 24px 12px 40px; margin-bottom: 12px; background: var(--light-gray); border-radius: var(--radius-md); border-left: 4px solid var(--primary-color); transition: all 0.3s ease; line-height: 1.6; color: var(--text-color);}.bullet-list li:hover { background: var(--white); box-shadow: var(--shadow-sm); transform: translateX(4px);}.bullet-list li::before { content: \f138; font-family: Font Awesome 5 Free; font-weight: 900; position: absolute; left: 16px; top: 14px; color: var(--primary-color); font-size: 12px;}/* 链接样式优化 */.info-card a { color: var(--primary-color); text-decoration: none; font-weight: 500; transition: all 0.3s ease; position: relative;}.info-card a:hover { color: var(--primary-hover); text-decoration: none;}.info-card a::after { content: ; position: absolute; bottom: -2px; left: 0; width: 0; height: 2px; background: var(--primary-color); transition: width 0.3s ease;}.info-card a:hover::after { width: 100%;}/* 表格链接特殊处理 */.modern-table a { color: var(--primary-color); text-decoration: none; font-weight: 500; padding: 4px 8px; border-radius: var(--radius-sm); transition: all 0.3s ease; display: inline-block;}.modern-table a:hover { background: var(--primary-light); color: var(--primary-hover); transform: translateY(-1px);}/* 标签和徽章 */.badge { display: inline-flex; align-items: center; padding: 4px 12px; border-radius: 20px; font-size: 0.75rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; margin: 0 4px;}.badge.primary { background: var(--primary-light); color: var(--primary-color);}.badge.success { background: var(--success-light); color: var(--success-color);}.badge.info { background: var(--info-light); color: var(--info-color);}/* 提示和警告框 */.alert { padding: 16px 20px; border-radius: var(--radius-lg); margin: 16px 0; border: 1px solid; position: relative; overflow: hidden;}.alert::before { content: ; position: absolute; left: 0; top: 0; width: 4px; height: 100%;}.alert.info { background: var(--info-light); border-color: var(--info-color); color: var(--info-color);}.alert.info::before { background: var(--info-color);}.alert.success { background: var(--success-light); border-color: var(--success-color); color: var(--success-color);}.alert.success::before { background: var(--success-color);}.alert.warning { background: var(--warning-light); border-color: var(--warning-color); color: var(--warning-color);}.alert.warning::before { background: var(--warning-color);}/* 加载动画 */.loading-overlay { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: rgba(255, 255, 255, 0.95); display: flex; align-items: center; justify-content: center; border-radius: inherit; opacity: 0; visibility: hidden; transition: all 0.3s ease; backdrop-filter: blur(4px);}.loading-overlay.active { opacity: 1; visibility: visible;}.loading-spinner { width: 32px; height: 32px; border: 3px solid var(--light-gray); border-top: 3px solid var(--primary-color); border-radius: 50%; animation: spin 1s linear infinite;}@keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); }}/* 成功动画 */@keyframes checkmark { 0% { stroke-dashoffset: 50; } 100% { stroke-dashoffset: 0; }}.success-checkmark { width: 24px; height: 24px; border-radius: 50%; display: block; stroke-width: 2; stroke: var(--success-color); stroke-miterlimit: 10; margin: 0 auto; animation: checkmark 0.6s ease-out; stroke-dasharray: 50; stroke-dashoffset: 50;}/* 工具提示 */.tooltip { position: relative; display: inline-block;}.tooltip .tooltiptext { visibility: hidden; width: 200px; background: var(--dark-gray); color: var(--white); text-align: center; border-radius: var(--radius-md); padding: 8px 12px; position: absolute; z-index: 1000; bottom: 125%; left: 50%; margin-left: -100px; opacity: 0; transition: opacity 0.3s; font-size: 0.875rem; line-height: 1.4;}.tooltip .tooltiptext::after { content: ; position: absolute; top: 100%; left: 50%; margin-left: -5px; border-width: 5px; border-style: solid; border-color: var(--dark-gray) transparent transparent transparent;}.tooltip:hover .tooltiptext { visibility: visible; opacity: 1;}/* 深色模式支持 */@media (prefers-color-scheme: dark) { .timestamp-date-page { background: #1a202c; } .timestamp-tool, .info-card { background: #2d3748; border-color: #4a5568; } .conversion-section { background: #374151; } .modern-input, .modern-textarea, .modern-select { background: #374151; border-color: #4a5568; color: #e2e8f0; } .modern-table { background: #2d3748; } .modern-table tbody tr:hover { background: #374151; }}/style> !-- 额外的Meta标签 (动态注入) --> !-- Open Graph / Facebook -->meta propertyog:type contentwebsite>meta propertyog:url contenthttps://unixepoch.net/en>meta propertyog:title content | Unix Timestamp Converter Online - Unix Epoch>meta propertyog:description contentMultiple unix timestamp converter and datetime converter online, supports timestamps in seconds, milliseconds, and datetime in UTC, in local timezone>meta propertyog:image contenthttps://unixepoch.net/images/og-image.jpg>!-- Twitter -->meta propertytwitter:card contentsummary_large_image>meta propertytwitter:url contenthttps://unixepoch.net/en>meta propertytwitter:title content | Unix Timestamp Converter Online - Unix Epoch>meta propertytwitter:description contentMultiple unix timestamp converter and datetime converter online, supports timestamps in seconds, milliseconds, and datetime in UTC, in local timezone>meta propertytwitter:image contenthttps://unixepoch.net/images/og-image.jpg> !-- 第三方脚本 --> script srchttps://cdnjs.cloudflare.com/ajax/libs/layui/2.9.21/layui.min.js integritysha512-+3nec9IwGC0wwTDP5fSYrOKci7ZtmIev1Ke49YNClP6u2eZoPN7LGXmxZYRd2YZJ9x9rbrWZ3yScu2PSfzkCmg crossoriginanonymous referrerpolicyno-referrer>/script> script srchttps://cdn.jsdelivr.net/npm/luxon@3.5.0/build/global/luxon.min.js>/script> !-- Google tag (gtag.js) --> script async srchttps://www.googletagmanager.com/gtag/js?idG-Y7NE0372CL>/script> script> window.dataLayer window.dataLayer || ; function gtag(){dataLayer.push(arguments);} gtag(js, new Date()); gtag(config, G-Y7NE0372CL); /script> !-- Google Adsense --> script async srchttps://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?clientca-pub-4770819882098953 crossoriginanonymous>/script> !-- Microsoft Clarity --> script typetext/javascript> (function(c,l,a,r,i,t,y){ caca||function(){(ca.qca.q||).push(arguments)}; tl.createElement(r);t.async1;t.srchttps://www.clarity.ms/tag/+i; yl.getElementsByTagName(r)0;y.parentNode.insertBefore(t,y); })(window, document, clarity, script, san462gyfd); /script> !-- Iubenda Cookie Consent --> script typetext/javascript> var _iub _iub || ; _iub.csConfiguration {siteId:4143686,cookiePolicyId:15343277,lang:en,storage:{useSiteId:true}}; /script> script typetext/javascript srchttps://cs.iubenda.com/autoblocking/4143686.js>/script> script typetext/javascript src//cdn.iubenda.com/cs/gpp/stub.js>/script> script typetext/javascript src//cdn.iubenda.com/cs/iubenda_cs.js charsetUTF-8 async>/script>/head>body> !-- 导航栏 --> header classheader> h2 classnav-title>UnixEpoch/h2> div classmenu-toggle idmenuToggle> i classfas fa-bars>/i> /div> !-- iLovePDF风格的现代导航条 -->div classmodern-nav-container> nav classmodern-nav aria-labelMain navigation> !-- 基础导航项 --> a hrefhttps://unixepoch.net/ classnav-item active> i classfas fa-home>/i> span>Home/span> /a> a hrefhttps://unixepoch.net/blog classnav-item> i classfas fa-blog>/i> span>Blog/span> /a> !-- Timestamp 工具分类 --> div classnav-dropdown> a href# classnav-item dropdown-trigger aria-expandedfalse> i classfas fa-clock>/i> span>Time/span> i classfas fa-chevron-down dropdown-arrow>/i> /a> div classdropdown-panel> div classdropdown-content> a hrefhttps://unixepoch.net/ classdropdown-item active> i classfas fa-exchange-alt>/i> div> span classitem-title>Timestamp Converter/span> span classitem-desc>Convert timestamp to date/span> /div> /a> a hrefhttps://unixepoch.net/timestamp-difference classdropdown-item > i classfas fa-minus>/i> div> span classitem-title>Timestamp Difference/span> span classitem-desc>Calculate time difference/span> /div> /a> a hrefhttps://unixepoch.net/timestamp-arithmetic classdropdown-item > i classfas fa-plus>/i> div> span classitem-title>Timestamp Calculator/span> span classitem-desc>Add/subtract time/span> /div> /a> a hrefhttps://unixepoch.net/countdown-timer classdropdown-item > i classfas fa-hourglass-half>/i> div> span classitem-title>Countdown Timer/span> span classitem-desc>Create custom countdown timers/span> /div> /a> /div> /div> /div> !-- Calculator 计算器分类 --> div classnav-dropdown> a href# classnav-item dropdown-trigger aria-expandedfalse> i classfas fa-calculator>/i> span>Calculator/span> i classfas fa-chevron-down dropdown-arrow>/i> /a> div classdropdown-panel> div classdropdown-content> a hrefhttps://unixepoch.net/age-calculator classdropdown-item > i classfas fa-birthday-cake>/i> div> span classitem-title>Age Calculator/span> span classitem-desc>Calculate exact age/span> /div> /a> a hrefhttps://unixepoch.net/sleep-calculator classdropdown-item > i classfas fa-bed>/i> div> span classitem-title>Sleep Calculator/span> span classitem-desc>Optimize sleep schedule/span> /div> /a> /div> /div> /div> !-- Converter 转换器分类 --> div classnav-dropdown> a href# classnav-item dropdown-trigger aria-expandedfalse> i classfas fa-sync-alt>/i> span>Converter/span> i classfas fa-chevron-down dropdown-arrow>/i> /a> div classdropdown-panel> div classdropdown-content> a hrefhttps://unixepoch.net/timezone-converter classdropdown-item > i classfas fa-globe>/i> div> span classitem-title>Timezone Converter/span> span classitem-desc>Convert between timezones/span> /div> /a> a hrefhttps://unixepoch.net/date-converter classdropdown-item> i classfas fa-calendar-alt>/i> div> span classitem-title>Date Converter/span> span classitem-desc>Convert date formats/span> /div> /a> a hrefhttps://unixepoch.net/epoch-converter classdropdown-item> i classfas fa-stopwatch>/i> div> span classitem-title>Epoch Converter/span> span classitem-desc>Convert epoch time/span> /div> /a> /div> /div> /div> !-- Developer Resources --> a hrefhttps://unixepoch.net/developer-resources classnav-item > i classfas fa-code>/i> span>Developer Resources/span> /a> /nav>/div>style>/* 现代导航条样式 - iLovePDF风格 */.modern-nav-container { display: flex; justify-content: flex-start; /* 改为左对齐,避免内容超出时的布局问题 */ width: 100%; height: 48px; /* 设置固定高度,匹配导航项高度 */ overflow-x: auto !important; /* 强制水平滚动 */ overflow-y: hidden !important; /* 彻底禁止垂直滚动 */ scrollbar-width: none; -ms-overflow-style: none;}.modern-nav-container::-webkit-scrollbar { display: none;}.modern-nav { display: flex; align-items: center; gap: 8px; padding: 0 16px; min-width: max-content; flex-shrink: 0; /* 防止导航项被压缩 */}/* 导航项基础样式 */.nav-item { display: flex; align-items: center; gap: 8px; padding: 12px 16px; border-radius: 8px; color: var(--text-secondary); text-decoration: none; font-size: 14px; font-weight: 500; transition: all 0.2s ease; white-space: nowrap; position: relative;}.nav-item:hover { background-color: var(--primary-ultra-light); color: var(--primary-color); transform: translateY(-1px);}.nav-item.active { background-color: var(--primary-color); color: white; box-shadow: 0 2px 8px rgba(255, 107, 74, 0.3);}.nav-item i { font-size: 16px; width: 16px; text-align: center;}/* 下拉菜单容器 */.nav-dropdown { position: relative;}.dropdown-trigger .dropdown-arrow { font-size: 12px; transition: transform 0.2s ease; margin-left: 4px;}.dropdown-trigger:hover .dropdown-arrow,.nav-dropdown.active .dropdown-arrow { transform: rotate(180deg);}/* 下拉面板 */.dropdown-panel { position: fixed; /* 改为fixed定位,脱离overflow限制 */ background: white; border-radius: 12px; box-shadow: var(--shadow-md); border: 1px solid var(--border-color); opacity: 0; visibility: hidden; transform: translateY(-10px); transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); z-index: 9999; /* 提高z-index */ min-width: 280px; /* 位置将通过JavaScript动态设置 */}.nav-dropdown:hover .dropdown-panel,.nav-dropdown.active .dropdown-panel { opacity: 1; visibility: visible; transform: translateY(0);}.dropdown-content { padding: 8px;}/* 下拉菜单项 */.dropdown-item { display: flex; align-items: center; gap: 12px; padding: 12px 16px; border-radius: 8px; color: var(--text-color); text-decoration: none; transition: all 0.2s ease; margin-bottom: 4px;}.dropdown-item:hover { background-color: var(--primary-ultra-light); color: var(--primary-color); transform: translateX(4px);}.dropdown-item.active { background-color: var(--primary-light); color: var(--primary-color);}.dropdown-item i { font-size: 16px; width: 20px; text-align: center; color: var(--primary-color);}.dropdown-item div { flex: 1;}.item-title { display: block; font-weight: 600; font-size: 14px; line-height: 1.2;}.item-desc { display: block; font-size: 12px; color: var(--text-secondary); margin-top: 2px; line-height: 1.3;}/* 响应式设计 */@media (max-width: 768px) { .modern-nav-container { display: none; /* 移动端隐藏,使用原有的移动端导航 */ }}/* 确保下拉菜单在header中显示 */@media (min-width: 769px) { .header .nav-links-container { overflow: visible !important; }}/style>script>// 现代导航条交互document.addEventListener(DOMContentLoaded, function() { const dropdowns document.querySelectorAll(.nav-dropdown); let activeDropdown null; // 动态设置下拉面板位置 function positionDropdown(dropdown) { const panel dropdown.querySelector(.dropdown-panel); const trigger dropdown.querySelector(.dropdown-trigger); if (panel && trigger) { const triggerRect trigger.getBoundingClientRect(); panel.style.top (triggerRect.bottom + 8) + px; panel.style.left triggerRect.left + px; } } dropdowns.forEach(dropdown > { const trigger dropdown.querySelector(.dropdown-trigger); // 鼠标悬停显示 dropdown.addEventListener(mouseenter, function() { closeAllDropdowns(); this.classList.add(active); trigger.setAttribute(aria-expanded, true); activeDropdown this; // 动态设置下拉面板位置 positionDropdown(this); }); // 鼠标离开隐藏 dropdown.addEventListener(mouseleave, function() { this.classList.remove(active); trigger.setAttribute(aria-expanded, false); activeDropdown null; }); // 点击切换 trigger.addEventListener(click, function(e) { e.preventDefault(); if (dropdown.classList.contains(active)) { dropdown.classList.remove(active); trigger.setAttribute(aria-expanded, false); activeDropdown null; } else { closeAllDropdowns(); dropdown.classList.add(active); trigger.setAttribute(aria-expanded, true); activeDropdown dropdown; // 动态设置下拉面板位置 positionDropdown(dropdown); } }); }); // 点击外部关闭 document.addEventListener(click, function(e) { if (!e.target.closest(.nav-dropdown) && activeDropdown) { closeAllDropdowns(); } }); function closeAllDropdowns() { dropdowns.forEach(dropdown > { dropdown.classList.remove(active); dropdown.querySelector(.dropdown-trigger).setAttribute(aria-expanded, false); }); activeDropdown null; } // ESC键关闭 document.addEventListener(keydown, function(e) { if (e.key Escape && activeDropdown) { closeAllDropdowns(); } });});/script>style>/* 确保只显示新导航条 */@media (min-width: 769px) { .header .nav-links:not(.modern-nav) { display: none !important; }}/style> div classnav-lang> form classlayui-form lang-form idlanguageChangeForm onsubmitreturn false> select classlanguage-select lay-filterlanguageChange> option value/ selected>English/option> option value/zh >中文/option> option value/hi >हिंदी/option> option value/es >español/option> option value/ar >بالعربية/option> option value/ru >Русский язык/option> option value/pt >Português/option> option value/fr >Français/option> option value/it >Italiano/option> option value/ja >日語/option> option value/ms >Melayu/option> option value/de >Deutsch/option> option value/nl >Nederlands/option> option value/nb >Norsk/option> option value/da >Dansk/option> option value/vi >Tiếng Việt/option> /select> /form> /div> /header> !-- 移动端侧边栏 --> div classsidebar-overlay idsidebarOverlay>/div> div classmobile-sidebar idmobileSidebar> div classsidebar-header> h3>UnixEpoch/h3> div classclose-sidebar idcloseSidebar> i classfas fa-times>/i> /div> /div> div classsidebar-nav> a hrefhttps://unixepoch.net/ classactive>Home/a> a hrefhttps://unixepoch.net/blog>Blog/a> !-- Timestamp 工具 --> div classsidebar-category> h4>i classfas fa-clock>/i> Timestamp/h4> a hrefhttps://unixepoch.net/ classactive>Timestamp Converter/a> a hrefhttps://unixepoch.net/timestamp-difference class>Timestamp Difference/a> a hrefhttps://unixepoch.net/timestamp-arithmetic class>Timestamp Calculator/a> /div> !-- Calculator 计算器 --> div classsidebar-category> h4>i classfas fa-calculator>/i> Calculator/h4> a hrefhttps://unixepoch.net/age-calculator class>Age Calculator/a> a hrefhttps://unixepoch.net/sleep-calculator class>Sleep Calculator/a> /div> !-- Converter 转换器 --> div classsidebar-category> h4>i classfas fa-exchange-alt>/i> Converter/h4> a hrefhttps://unixepoch.net/timezone-converter class>Timezone Converter/a> /div> a hrefhttps://unixepoch.net/developer-resources class>Developer Resources/a> /div> div classsidebar-lang> h4>Language/h4> form classlayui-form idmobileLangForm onsubmitreturn false> select classlanguage-select lay-filtermobileLangChange> option value/ selected>English/option> option value/zh >中文/option> option value/hi >हिंदी/option> option value/es >español/option> option value/ar >بالعربية/option> option value/ru >Русский язык/option> option value/pt >Português/option> option value/fr >Français/option> option value/it >Italiano/option> option value/ja >日語/option> option value/ms >Melayu/option> option value/de >Deutsch/option> option value/nl >Nederlands/option> option value/nb >Norsk/option> option value/da >Dansk/option> option value/vi >Tiếng Việt/option> /select> /form> /div> /div> !-- 头部脚本 --> script> layui.use(form, function () { var form layui.form; var $ layui.$; // 语言切换 form.on(select(languageChange), function (data) { var selectedValue data.value; var currentPath window.location.pathname; var newUrl; // 检查当前路径是否包含语言前缀 var langRegex /^\/(?:zh|vi|da|nb|ms|it|pt|es|hi|nl|ru|fr|de|ja|ar)(?:\/|$)/; if (selectedValue /) { // 选择英语,移除语言前缀 if (langRegex.test(currentPath)) { newUrl currentPath.replace(langRegex, /); } else { newUrl currentPath; } } else { // 选择其他语言 var selectedLang selectedValue.replace(/, ); if (langRegex.test(currentPath)) { // 如果当前路径包含语言前缀,则替换语言部分 newUrl currentPath.replace(langRegex, / + selectedLang + /); } else { // 如果当前路径不包含语言前缀,则添加语言前缀 newUrl / + selectedLang + currentPath; } } // 保留查询参数和哈希部分 if (window.location.search) { newUrl + window.location.search; } if (window.location.hash) { newUrl + window.location.hash; } // 跳转到新URL window.location.href newUrl; return false; }); // 移动端语言切换 form.on(select(mobileLangChange), function (data) { var selectedValue data.value; var currentPath window.location.pathname; var newUrl; // 检查当前路径是否包含语言前缀 var langRegex /^\/(?:zh|vi|da|nb|ms|it|pt|es|hi|nl|ru|fr|de|ja|ar)(?:\/|$)/; if (selectedValue /) { // 选择英语,移除语言前缀 if (langRegex.test(currentPath)) { newUrl currentPath.replace(langRegex, /); } else { newUrl currentPath; } } else { // 选择其他语言 var selectedLang selectedValue.replace(/, ); if (langRegex.test(currentPath)) { // 如果当前路径包含语言前缀,则替换语言部分 newUrl currentPath.replace(langRegex, / + selectedLang + /); } else { // 如果当前路径不包含语言前缀,则添加语言前缀 newUrl / + selectedLang + currentPath; } } // 保留查询参数和哈希部分 if (window.location.search) { newUrl + window.location.search; } if (window.location.hash) { newUrl + window.location.hash; } // 跳转到新URL window.location.href newUrl; return false; }); // 导航滚动优化 - 仅在没有现代导航时应用 var $navContainer $(.nav-links-container); // 检查是否存在现代导航 function hasModernNav() { return $(.modern-nav-container).length > 0 && window.innerWidth > 769; } // 检查导航是否需要滚动 function checkNavScroll() { // 如果存在现代导航,跳过旧的滚动逻辑 if (hasModernNav()) { $navContainer.removeClass(scrollable shadow-left shadow-right); return; } var $nav $navContainer.find(.nav-links); var navWidth $nav.width(); var containerWidth $navContainer.width(); if (navWidth > containerWidth) { $navContainer.addClass(scrollable); // 如果内容超出容器而且没有滚动过,添加一个微妙的滚动提示 if (!$navContainer.data(scroll-hint-shown)) { setTimeout(function() { if ($navContainer.scrollLeft() 0) { $navContainer.animate({scrollLeft: 30}, 800, function() { $navContainer.animate({scrollLeft: 0}, 400); }); $navContainer.data(scroll-hint-shown, true); } }, 1000); } } else { $navContainer.removeClass(scrollable); } updateScrollShadows(); } // 更新滚动阴影 function updateScrollShadows() { // 如果存在现代导航,跳过旧的滚动逻辑 if (hasModernNav()) { return; } if (!$navContainer.hasClass(scrollable)) { $navContainer.removeClass(shadow-left shadow-right); return; } var scrollLeft $navContainer.scrollLeft(); var maxScrollLeft $navContainer0.scrollWidth - $navContainer0.clientWidth; // 根据滚动位置显示/隐藏阴影 if (scrollLeft 0) { $navContainer.removeClass(shadow-left).addClass(shadow-right); } else if (scrollLeft > maxScrollLeft - 5) { $navContainer.removeClass(shadow-right).addClass(shadow-left); } else { $navContainer.addClass(shadow-left shadow-right); } } // 初始化并响应窗口大小变化 $(window).on(load resize, checkNavScroll); $navContainer.on(scroll, updateScrollShadows); // 添加触摸滑动支持 var touchStartX 0; var touchCurrentX 0; $navContainer.on(touchstart, function(e) { // 如果存在现代导航,跳过旧的滚动逻辑 if (hasModernNav()) return; touchStartX e.originalEvent.touches0.clientX; }); $navContainer.on(touchmove, function(e) { // 如果存在现代导航,跳过旧的滚动逻辑 if (hasModernNav()) return; if (!$navContainer.hasClass(scrollable)) return; touchCurrentX e.originalEvent.touches0.clientX; var touchDiff touchStartX - touchCurrentX; if (Math.abs(touchDiff) > 5) { // 防止页面在导航滑动时也滚动 e.preventDefault(); } }); // 侧边栏开关 $(#menuToggle).on(click, function() { $(#mobileSidebar).addClass(active); $(#sidebarOverlay).fadeIn(); $(body).css(overflow, hidden); }); $(#closeSidebar, #sidebarOverlay).on(click, function() { $(#mobileSidebar).removeClass(active); $(#sidebarOverlay).fadeOut(); $(body).css(overflow, auto); }); // 点击侧边栏导航链接后关闭侧边栏 $(.sidebar-nav a).not(target_blank).on(click, function() { $(#mobileSidebar).removeClass(active); $(#sidebarOverlay).fadeOut(); $(body).css(overflow, auto); }); // 防止下拉菜单触发器导航 $(.nav-category > a).on(click, function(e) { e.preventDefault(); return false; }); }); /script>/body>/html>!-- 主内容区 -->div classmain-container> main classleft-panel> div classtimestamp-date-page> !-- 功能导航预览区 --> div classfeatures-overview> div classoverview-header> h1 classmain-title>Unix Timestamp Converter Online - Unix Epoch/h1> p classmain-subtitle>Multiple unix timestamp converter and datetime converter online, supports timestamps in seconds, milliseconds, and datetime in UTC, in local timezone/p> /div> div classfeatures-grid> div classfeature-card onclickscrollToElement(single-converter)> div classfeature-icon single> i classfas fa-exchange-alt>/i> /div> span classfeature-title>Unix timestamp converter/span> /div> div classfeature-card onclickscrollToElement(batch-converter)> div classfeature-icon batch> i classfas fa-list>/i> /div> span classfeature-title>Multiple unix timestamp converter/span> /div> /div> /div> !-- 单个转换工具 --> div classtimestamp-tool idsingle-converter> div classtool-header> div classtool-icon> i classfas fa-exchange-alt>/i> /div> h2>Unix timestamp converter/h2> /div> div classtool-content> !-- 时间戳转日期区域 --> div classconversion-section> div classsection-header> div classsection-icon> i classfas fa-clock>/i> /div> h3>timestamp to datetime/h3> /div> form classlayui-form idtimestampToDatetimeForm lay-filtertimestampToDatetimeForm onsubmitreturn false> div classform-group> label classform-label>Enter Timestamp/label> input typetext nametimestamp placeholderEnter timestamp here... classmodern-input idtimestamp-input-single value autofocus> /div> div classcontrol-panel> button classconvert-btn lay-submit lay-filtertimestampToDatetime idtimestampToDatetime> i classfas fa-arrow-right stylemargin-right: 8px;>/i> Convert /button> select nameunit lay-filterunitChange classmodern-select> option values>Second (s)/option> option valuems>Millisecond (ms)/option> /select> select classmodern-select timezone nametimezone lay-filtertimezoneChange> option valueUTC+0>UTC/option> option valueUTC+12>UTC+12/option> option valueUTC+11>UTC+11/option> option valueUTC+10>UTC+10/option> option valueUTC+9>UTC+9/option> option valueUTC+8>UTC+8/option> option valueUTC+7>UTC+7/option> option valueUTC+6>UTC+6/option> option valueUTC+5>UTC+5/option> option valueUTC+4>UTC+4/option> option valueUTC+3>UTC+3/option> option valueUTC+2>UTC+2/option> option valueUTC+1>UTC+1/option> option valueUTC-1>UTC-1/option> option valueUTC-2>UTC-2/option> option valueUTC-3>UTC-3/option> option valueUTC-4>UTC-4/option> option valueUTC-5>UTC-5/option> option valueUTC-6>UTC-6/option> option valueUTC-7>UTC-7/option> option valueUTC-8>UTC-8/option> option valueUTC-9>UTC-9/option> option valueUTC-10>UTC-10/option> option valueUTC-11>UTC-11/option> option valueUTC-12>UTC-12/option> /select> /div> div classform-group> label classform-label>Converted DateTime/label> div classresult-container> input typetext namedatetime placeholderConverted result will appear here... classmodern-input result-output readonly> button typebutton classcopy-result-btn onclickcopyResultValue(this) titleCopy result> i classfas fa-copy>/i> /button> /div> /div> /form> /div> !-- 日期转时间戳区域 --> div classconversion-section> div classsection-header> div classsection-icon> i classfas fa-calendar-alt>/i> /div> h3>datetime to timestamp span stylefont-weight: normal; color: grey;> ( Format: year-month-day hour:minute:second )/span>/h3> /div> form classlayui-form iddatetimeToTimestampForm lay-filterdatetimeToTimestampForm onsubmitreturn false> div classform-group> label classform-label>Enter DateTime (YYYY-MM-DD HH:mm:ss)/label> input typetext namedatetime placeholder2024-01-01 12:00:00 classmodern-input iddatetime-input-single value > /div> div classcontrol-panel> button classconvert-btn lay-submit lay-filterdatetimeToTimestamp> i classfas fa-arrow-right stylemargin-right: 8px;>/i> Convert /button> select classmodern-select timezone lay-filtertimezoneChange nametimezone> option valueUTC+0>UTC/option> option valueUTC+12>UTC+12/option> option valueUTC+11>UTC+11/option> option valueUTC+10>UTC+10/option> option valueUTC+9>UTC+9/option> option valueUTC+8>UTC+8/option> option valueUTC+7>UTC+7/option> option valueUTC+6>UTC+6/option> option valueUTC+5>UTC+5/option> option valueUTC+4>UTC+4/option> option valueUTC+3>UTC+3/option> option valueUTC+2>UTC+2/option> option valueUTC+1>UTC+1/option> option valueUTC-1>UTC-1/option> option valueUTC-2>UTC-2/option> option valueUTC-3>UTC-3/option> option valueUTC-4>UTC-4/option> option valueUTC-5>UTC-5/option> option valueUTC-6>UTC-6/option> option valueUTC-7>UTC-7/option> option valueUTC-8>UTC-8/option> option valueUTC-9>UTC-9/option> option valueUTC-10>UTC-10/option> option valueUTC-11>UTC-11/option> option valueUTC-12>UTC-12/option> /select> select classmodern-select lay-filterunitChange nameunit> option values>Second (s)/option> option valuems>Millisecond (ms)/option> /select> /div> div classform-group> label classform-label>Converted Timestamp/label> div classresult-container> input typetext nametimestamp placeholderConverted timestamp will appear here... classmodern-input result-output readonly> button typebutton classcopy-result-btn onclickcopyResultValue(this) titleCopy result> i classfas fa-copy>/i> /button> /div> /div> /form> /div> /div> /div> !-- 工具间快速导航 --> div classtools-navigation> button classnav-btn onclickscrollToElement(batch-converter)> i classfas fa-arrow-down>/i> span>Jump to Batch Converter/span> div classnav-hint>Process multiple timestamps/div> /button> /div> !-- 批量转换工具 --> div classtimestamp-tool idbatch-converter> div classtool-header> div classtool-icon> i classfas fa-list>/i> /div> h2>Multiple unix timestamp converter/h2> /div> div classtool-content> !-- 批量时间戳转日期区域 --> div classconversion-section> div classsection-header> div classsection-icon> i classfas fa-clock>/i> /div> h3>multiple timestamp > datetime (one per line)/h3> /div> form classlayui-form idbatchTimestampToDatetimeForm lay-filterbatchTimestampToDatetimeForm onsubmitreturn false> div classform-group> label classform-label>Enter Multiple Timestamps (One Per Line)/label> textarea placeholderEnter timestamps here, one per line... classmodern-textarea nametimestampText idtimestamp-textarea-multi>/textarea> /div> div classcontrol-panel> button classconvert-btn lay-submit lay-filterbatchTimestampToDatetime> i classfas fa-arrow-right stylemargin-right: 8px;>/i> Convert /button> select classmodern-select lay-filterunitChange nameunit> option values>Second (s)/option> option valuems>Millisecond (ms)/option> /select> select classmodern-select timezone lay-filtertimezoneChange nametimezone> option valueUTC+0>UTC/option> option valueUTC+12>UTC+12/option> option valueUTC+11>UTC+11/option> option valueUTC+10>UTC+10/option> option valueUTC+9>UTC+9/option> option valueUTC+8>UTC+8/option> option valueUTC+7>UTC+7/option> option valueUTC+6>UTC+6/option> option valueUTC+5>UTC+5/option> option valueUTC+4>UTC+4/option> option valueUTC+3>UTC+3/option> option valueUTC+2>UTC+2/option> option valueUTC+1>UTC+1/option> option valueUTC-1>UTC-1/option> option valueUTC-2>UTC-2/option> option valueUTC-3>UTC-3/option> option valueUTC-4>UTC-4/option> option valueUTC-5>UTC-5/option> option valueUTC-6>UTC-6/option> option valueUTC-7>UTC-7/option> option valueUTC-8>UTC-8/option> option valueUTC-9>UTC-9/option> option valueUTC-10>UTC-10/option> option valueUTC-11>UTC-11/option> option valueUTC-12>UTC-12/option> /select> /div> table classmodern-table idbatchResult1> thead> tr> th>input/th> th>output/th> /tr> /thead> tbody>/tbody> /table> /form> /div> !-- 批量日期转时间戳区域 --> div classconversion-section> div classsection-header> div classsection-icon> i classfas fa-calendar-alt>/i> /div> h3>multiple datetime > to timestamp (one per line)/h3> /div> form classlayui-form idbatchDatetimeToTimestampForm lay-filterbatchDatetimeToTimestampForm onsubmitreturn false> div classform-group> label classform-label>Enter Multiple DateTimes (One Per Line, YYYY-MM-DD HH:mm:ss)/label> textarea placeholderEnter datetime strings here, one per line... iddatetime-textarea-multi classmodern-textarea namedatetimeText>/textarea> /div> div classcontrol-panel> button classconvert-btn lay-submit lay-filterbatchDatetimeToTimestamp> i classfas fa-arrow-right stylemargin-right: 8px;>/i> Convert /button> select classmodern-select timezone lay-filtertimezoneChange nametimezone> option valueUTC+0>UTC/option> option valueUTC+12>UTC+12/option> option valueUTC+11>UTC+11/option> option valueUTC+10>UTC+10/option> option valueUTC+9>UTC+9/option> option valueUTC+8>UTC+8/option> option valueUTC+7>UTC+7/option> option valueUTC+6>UTC+6/option> option valueUTC+5>UTC+5/option> option valueUTC+4>UTC+4/option> option valueUTC+3>UTC+3/option> option valueUTC+2>UTC+2/option> option valueUTC+1>UTC+1/option> option valueUTC-1>UTC-1/option> option valueUTC-2>UTC-2/option> option valueUTC-3>UTC-3/option> option valueUTC-4>UTC-4/option> option valueUTC-5>UTC-5/option> option valueUTC-6>UTC-6/option> option valueUTC-7>UTC-7/option> option valueUTC-8>UTC-8/option> option valueUTC-9>UTC-9/option> option valueUTC-10>UTC-10/option> option valueUTC-11>UTC-11/option> option valueUTC-12>UTC-12/option> /select> select classmodern-select lay-filterunitChange nameunit> option values>Second (s)/option> option valuems>Millisecond (ms)/option> /select> /div> table classmodern-table idbatchResult2> thead> tr> th>input/th> th>output/th> /tr> /thead> tbody>/tbody> /table> /form> /div> /div> /div> !-- 返回顶部导航 --> div classtools-navigation> button classnav-btn back-to-top onclickscrollToElement(single-converter)> i classfas fa-arrow-up>/i> span>Back to Single Converter/span> div classnav-hint>Or return to top/div> /button> /div> !-- 说明文档 --> div classinfo-card> h2>What is unix epoch time?/h2> p>Unix epoch time (also known as Unix time, Unix timestamp, POSIX time, seconds since the epoch) is a system for describing a point in time. br> It is the number of seconds that have elapsed since the unix epoch, minus leap seconds; the unix epoch is 00:00:00 UTC on 1 January 1970 (an arbitrary date); leap seconds are ignored,with a leap second having the same unix time as the second before it, and every day is treated as if it contains exactly 86400 seconds. due to this treatment unix time is not a true representation of UTC./p> table idepochTable classmodern-table lay-filterepochTableFilter> thead> tr> th>Human Readable Time/th> th>Seconds/th> /tr> /thead> tbody> tr> td>1 Minute/td> td>60 Seconds/td> /tr> tr> td>1 Hour/td> td>3600 Seconds/td> /tr> tr> td>1 Day/td> td>86400 Seconds/td> /tr> tr> td>1 Week/td> td>604800 Seconds/td> /tr> tr> td>1 Year (365 Day)/td> td>31536000 Seconds/td> /tr> /tbody> /table> /div> !-- 重要时间戳 --> div classinfo-card> h2>Some important unix epoch and dateTime/h2> table idepochDateTable classmodern-table lay-filterepochTableFilter> thead> tr> th>Unix Epoch Seconds/th> th>Date Time/th> /tr> /thead> tbody> tr> td>a href/en/timestamp-to-datetime/0 target_blank>0/a>/td> td>a href/en/datetime-to-timestamp/1970-01-01+00%3A00%3A00 target_blank>1970-01-01 00:00:00 UTC/a>/td> /tr> tr> td>a href/en/timestamp-to-datetime/946684800 target_blank>946684800/a>/td> td>a href/en/datetime-to-timestamp/2000-01-01+00%3A00%3A00 target_blank>2000-01-01 00:00:00 UTC/a>/td> /tr> tr> td>a href/en/timestamp-to-datetime/1735689600 target_blank>1735689600/a>/td> td>a href/en/datetime-to-timestamp/2025-01-01+00%3A00%3A00 target_blank>2025-01-01 00:00:00 UTC/a>/td> /tr> tr> td>a href/en/timestamp-to-datetime/1761955200 target_blank>1761955200/a>/td> td>a href/en/datetime-to-timestamp/2025-11-01+00%3A00%3A00 target_blank>2025-11-01 00:00:00 UTC/a>/td> /tr> tr> td>a href/en/timestamp-to-datetime/1763596800 target_blank>1763596800/a>/td> td>a href/en/datetime-to-timestamp/2025-11-20+00%3A00%3A00 target_blank>2025-11-20 00:00:00 UTC/a>/td> /tr> tr> td>a href/en/timestamp-to-datetime/1763643600 target_blank>1763643600/a>/td> td>a href/en/datetime-to-timestamp/2025-11-20+13%3A00%3A00 target_blank>2025-11-20 13:00:00 UTC/a>/td> /tr> tr> td>a href/en/timestamp-to-datetime/1763683200 target_blank>1763683200/a>/td> td>a href/en/datetime-to-timestamp/2025-11-21+00%3A00%3A00 target_blank>2025-11-21 00:00:00 UTC/a>/td> /tr> tr> td>a href/en/timestamp-to-datetime/1767225600 target_blank>1767225600/a>/td> td>a href/en/datetime-to-timestamp/2026-01-01+00%3A00%3A00 target_blank>2026-01-01 00:00:00 UTC/a>/td> /tr> tr> td>a href/en/timestamp-to-datetime/2147483647 target_blank>2147483647/a>/td> td>a href/en/datetime-to-timestamp/2038-01-19+03%3A14%3A07 target_blank>2038-01-19 03:14:07 UTC/a>/td> /tr> /tbody> /table> /div> !-- SEO优化内容 --> div classinfo-card> h2>How to Use Unix Timestamp Converter/h2> p>Our Unix timestamp converter is a versatile tool designed to help you convert between Unix timestamps and human-readable date formats. Below are step-by-step instructions for using the various features of this converter./p> h3>Converting Timestamp to Date/h3> ol classstep-list> li>Enter the Unix timestamp in the first input field (supports seconds or milliseconds)/li> li>Select the appropriate unit (seconds or milliseconds)/li> li>Choose your preferred timezone/li> li>Click the Convert button to see the result in human-readable format/li> /ol> h3>Converting Date to Timestamp/h3> ol classstep-list> li>Enter the date in YYYY-MM-DD HH:MM:SS format/li> li>Select the timezone your date corresponds to/li> li>Select your desired output unit (seconds or milliseconds)/li> li>Click the Convert button to get the Unix timestamp/li> /ol> h3>Batch Conversion/h3> p>For multiple conversions, use our batch conversion tools. Simply enter one timestamp or date per line, select the appropriate options, and click Convert to process them all at once./p> /div> !-- 常见问题解答 --> div classinfo-card> h2>Frequently Asked Questions/h2> div classfaq-section> div classfaq-item> h4 classfaq-question>What is a Unix timestamp?/h4> p classfaq-answer>A Unix timestamp represents the number of seconds that have elapsed since January 1, 1970, at 00:00:00 UTC (the Unix Epoch). It is a standardized way to represent a specific point in time regardless of timezone or locale./p> /div> div classfaq-item> h4 classfaq-question>Why do we use Unix timestamps?/h4> p classfaq-answer>Unix timestamps are widely used in programming and databases because they are efficient to store (as a single number), easy to compare, and independent of time zones and daylight saving time changes. They provide a universal reference for time across different systems./p> /div> div classfaq-item> h4 classfaq-question>What is the difference between seconds and milliseconds in Unix timestamps?/h4> p classfaq-answer>The standard Unix timestamp counts seconds since the Unix Epoch. However, for applications requiring greater precision, millisecond timestamps are used, which are 1000 times larger than the standard second-based timestamp (e.g., 1622505600000 instead of 1622505600)./p> /div> div classfaq-item> h4 classfaq-question>How do I handle dates before 1970 (the Unix Epoch)?/h4> p classfaq-answer>Dates before January 1, 1970, are represented as negative Unix timestamps. For example, December 31, 1969, at 23:59:59 UTC would be -1 second from the Unix Epoch./p> /div> div classfaq-item> h4 classfaq-question>Will Unix timestamps ever run out?/h4> p classfaq-answer>The 32-bit Unix timestamp will overflow on January 19, 2038 (known as the Year 2038 problem). However, most modern systems use 64-bit timestamps, which will not overflow for billions of years./p> /div> /div> /div> !-- 应用场景 --> div classinfo-card> h2>Common Uses for Unix Timestamps/h2> p>Unix timestamps are utilized across various applications and domains:/p> ul classbullet-list> li>Database record timestamps and log entries/li> li>Scheduling and cron jobs in operating systems/li> li>File creation and modification times/li> li>Network protocol time synchronization/li> li>Tracking events in web analytics and user activity monitoring/li> /ul> /div> /div> /main> !-- 现代化侧边栏 -->aside classmodern-sidebar> !-- 当前时间戳卡片 --> div classsidebar-card timestamp-card> div classcard-header> div classheader-icon> i classfas fa-clock>/i> /div> h3 classcard-title>Current Timestamp/h3> button classmodern-copy-btn idcopyBtn> i classfas fa-copy>/i> Copy /button> /div> div classcard-content> div classtimestamp-item> label classtimestamp-label>Seconds: /label> span classtimestamp-value idcurrentTimestampSec>--/span> /div> div classtimestamp-item> label classtimestamp-label>Milliseconds: /label> span classtimestamp-value idcurrentTimestampMs>--/span> /div> div classtimestamp-item> label classtimestamp-label>Datetime: /label> span classtimestamp-value idcurrentDatetime>--/span> /div> div classtimestamp-item> label classtimestamp-label>Timezone: /label> span classtimestamp-value idcurrentTimestampZone>--/span> /div> /div> /div> !-- 网站功能卡片 --> div classsidebar-card site-actions-card> div classcard-header> div classheader-icon> i classfas fa-share-alt>/i> /div> h3 classcard-title>Website Guide/h3> /div> div classcard-content> button classaction-item idcopyUrlBtn> i classfas fa-link>/i> span>Copy Site Url/span> /button> button classaction-item idfavBtn> i classfas fa-star>/i> span>Add to Favorite/span> /button> a classaction-item target_blank hrefhttps://www.facebook.com/sharer/sharer.php?uhttps://unixepoch.net> i classfab fa-facebook>/i> span>Share to Facebook/span> /a> a classaction-item target_blank hrefhttps://x.com/intent/post?urlhttps://unixepoch.net> i classfab fa-x-twitter>/i> span>Share to X.com/span> /a> /div> /div> !-- 工具导航卡片 --> div classsidebar-card tools-nav-card> div classcard-header> div classheader-icon> i classfas fa-tools>/i> /div> h3 classcard-title>Tools/h3> /div> div classcard-content> a classnav-item hrefhttps://unixepoch.net/epoch-converter> i classfas fa-stopwatch>/i> span>Epoch Converter/span> i classfas fa-chevron-right>/i> /a> a classnav-item hrefhttps://unixepoch.net/timestamp-converter> i classfas fa-clock>/i> span>Timestamp Converter/span> i classfas fa-chevron-right>/i> /a> a classnav-item hrefhttps://unixepoch.net/timestamp-difference> i classfas fa-minus>/i> span>Timestamp Difference Calculator/span> i classfas fa-chevron-right>/i> /a> a classnav-item hrefhttps://unixepoch.net/timestamp-arithmetic> i classfas fa-calculator>/i> span>Timestamp Add/Subtract Calculator/span> i classfas fa-chevron-right>/i> /a> a classnav-item hrefhttps://unixepoch.net/developer-resources> i classfas fa-code>/i> span>Developer Resources & Code Snippets/span> i classfas fa-chevron-right>/i> /a> a classnav-item hrefhttps://unixepoch.net/age-calculator> i classfas fa-birthday-cake>/i> span>Age Calculator/span> i classfas fa-chevron-right>/i> /a> /div> /div> /aside> /div>!-- 现代化底部footer -->footer classmodern-footer> div classfooter-content> div classfooter-main> div classfooter-brand> div classfooter-logo> div classfooter-logo-icon>/div> h3>UnixEpoch.net/h3> /div> p>Professional timestamp conversion tools for developers and data analysts worldwide/p> div classfooter-social> a href# aria-labelFollow us classsocial-link> i classfas fa-globe>/i> /a> /div> /div> div classfooter-links> div classfooter-column> h4>Tools/h4> ul> li>a href/>Timestamp Converter/a>/li> li>a href/age-calculator>Age Calculator/a>/li> li>a href/sleep-calculator>Sleep Calculator/a>/li> li>a href/timezone-converter>Timezone Converter/a>/li> /ul> /div> div classfooter-column> h4>Company/h4> ul> li>a href/about>About Us/a>/li> li>a href/blog>Blog/a>/li> li>a target_blank hrefhttps://ohtoolbox.com>OhToolbox.com/a>/li> /ul> /div> div classfooter-column> h4>Legal/h4> ul> li>a href/privacy>Privacy Policy/a>/li> li>a href/terms-of-service>Terms of Service/a>/li> li>a href/disclaimer>Disclaimer/a>/li> /ul> /div> div classfooter-column> h4>Resources/h4> ul> li>a href/sitemap.xml>Sitemap/a>/li> li>a href/developer-resources>Developer Resources/a>/li> /ul> /div> /div> /div> div classfooter-bottom> div classfooter-copyright> span>© 2025 UnixEpoch.net. All rights reserved./span> /div> div classfooter-info> span classfooter-stats>Trusted by 1M+ developers worldwide/span> span classfooter-uptime>99.9% uptime guarantee/span> /div> /div> /div>/footer>style>/* 现代化Footer样式 - iLovePDF风格 */.modern-footer { background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%); color: var(--text-color); margin-top: 80px; position: relative; border-top: 1px solid var(--border-color);}.modern-footer::before { content: ; position: absolute; top: 0; left: 0; right: 0; height: 2px; background: linear-gradient(90deg, transparent 0%, var(--primary-color) 30%, var(--secondary-color) 70%, transparent 100%);}.footer-content { max-width: 1200px; margin: 0 auto; padding: 0 24px;}.footer-main { display: grid; grid-template-columns: 1fr 2fr; gap: 48px; padding: 48px 0; border-bottom: 1px solid var(--border-color);}/* Footer Logo 设计 */.footer-logo { display: flex; align-items: center; gap: 12px; margin-bottom: 16px;}/* Footer 时钟Logo设计 */.footer-logo-icon { width: 32px; height: 32px; background: linear-gradient(135deg, var(--primary-color) 0%, var(--secondary-color) 100%); border-radius: 50%; position: relative; box-shadow: 0 3px 8px rgba(255, 107, 74, 0.25); border: 2px solid rgba(255, 255, 255, 0.9); animation: footerClockTick 120s linear infinite;}/* Footer时钟刻度 */.footer-logo-icon::after { content: ; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 20px; height: 20px; border: 1px solid rgba(255, 255, 255, 0.4); border-radius: 50%; background: radial-gradient(circle at center, rgba(255,255,255,0.8) 1px, transparent 1px), conic-gradient(from 0deg, transparent 85deg, rgba(255,255,255,0.6) 90deg, transparent 95deg, transparent 175deg, rgba(255,255,255,0.6) 180deg, transparent 185deg, transparent 265deg, rgba(255,255,255,0.6) 270deg, transparent 275deg);}@keyframes footerClockTick { 0% { box-shadow: 0 3px 8px rgba(255, 107, 74, 0.25), inset 0 -6px 0 -4px rgba(255, 255, 255, 0.7); } 25% { box-shadow: 0 3px 8px rgba(255, 107, 74, 0.25), inset 6px 0 0 -4px rgba(255, 255, 255, 0.7); } 50% { box-shadow: 0 3px 8px rgba(255, 107, 74, 0.25), inset 0 6px 0 -4px rgba(255, 255, 255, 0.7); } 75% { box-shadow: 0 3px 8px rgba(255, 107, 74, 0.25), inset -6px 0 0 -4px rgba(255, 255, 255, 0.7); } 100% { box-shadow: 0 3px 8px rgba(255, 107, 74, 0.25), inset 0 -6px 0 -4px rgba(255, 255, 255, 0.7); }}.footer-brand h3 { font-size: 1.75rem; font-weight: 800; margin: 0; background: linear-gradient(135deg, var(--primary-color), #ff8a65); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;}.footer-brand p { color: var(--text-secondary); line-height: 1.7; margin-bottom: 24px; max-width: 320px; font-size: 15px;}.footer-social { display: flex; gap: 12px;}.social-link { display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; background: var(--white); border: 2px solid var(--border-color); border-radius: var(--radius-sm); color: var(--text-secondary); text-decoration: none; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); box-shadow: var(--shadow-sm);}.social-link:hover { background: linear-gradient(135deg, var(--primary-color), var(--primary-hover)); color: var(--white); border-color: var(--primary-color); transform: translateY(-3px); box-shadow: var(--shadow-md);}.footer-links { display: grid; grid-template-columns: repeat(4, 1fr); gap: 32px;}.footer-column h4 { font-size: 16px; font-weight: 700; margin-bottom: 20px; color: var(--text-color); position: relative;}.footer-column h4::after { content: ; position: absolute; bottom: -8px; left: 0; width: 24px; height: 3px; background: linear-gradient(135deg, var(--primary-color), var(--secondary-color)); border-radius: 2px;}.footer-column ul { list-style: none; margin: 0; padding: 0;}.footer-column li { margin-bottom: 12px;}.footer-column a { color: var(--text-secondary); text-decoration: none; font-size: 15px; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); display: inline-block; position: relative;}.footer-column a:hover { color: var(--primary-color); transform: translateX(6px);}.footer-column a::before { content: ; position: absolute; left: -12px; top: 50%; transform: translateY(-50%); width: 4px; height: 4px; background: var(--primary-color); border-radius: 50%; opacity: 0; transition: opacity 0.3s ease;}.footer-column a:hover::before { opacity: 1;}.footer-bottom { display: flex; justify-content: space-between; align-items: center; padding: 32px 0; font-size: 14px; background: rgba(248, 249, 250, 0.5); border-radius: var(--radius-lg) var(--radius-lg) 0 0; margin: 0 -24px; padding-left: 24px; padding-right: 24px;}.footer-copyright { color: var(--text-secondary); font-weight: 500;}.footer-info { display: flex; gap: 32px;}.footer-stats,.footer-uptime { color: var(--text-secondary); font-size: 13px; font-weight: 500;}.footer-stats::before { content: 🏆; margin-right: 4px;}.footer-uptime::before { content: ⚡; margin-right: 4px;}/* 响应式设计 */@media (max-width: 1024px) { .footer-links { grid-template-columns: repeat(2, 1fr); gap: 24px; } .footer-main { grid-template-columns: 1fr; gap: 32px; }}@media (max-width: 768px) { .footer-main { padding: 32px 0; } .footer-links { grid-template-columns: 1fr; gap: 20px; } .footer-bottom { flex-direction: column; gap: 16px; text-align: center; } .footer-info { flex-direction: column; gap: 8px; } .footer-brand p { max-width: none; }}@media (max-width: 480px) { .footer-content { padding: 0 16px; } .footer-main { padding: 24px 0; } .footer-brand h3 { font-size: 1.25rem; }}/style>!-- 动态注入的页面脚本 -->script>layui.use(form, element, layer, function () { var form layui.form , element layui.element , layer layui.layer; var $ layui.$; const DateTime luxon.DateTime; // 标记变量,用于判断是否是代码触发按钮点击 var isCodeTrigger false; // 代码触发按钮点击事件 document.querySelectorAll(.convert-btn).forEach(function (btn) { btn.addEventListener(click, function () { isCodeTrigger true; }) }); // 监听单位选择变化 form.on(select(unitChange), function(data) { console.log(unitChange, data); var formElement $(data.elem).closest(form); var button formElement.find(.convert-btn); if (button) { // 模拟点击按钮 isCodeTrigger false; button.click(); } }); // 监听时区选择变化 form.on(select(timezoneChange), function(data) { console.log(timezoneChange, data); var formElement $(data.elem).closest(form); var button formElement.find(.convert-btn); if (button) { // 模拟点击按钮 button.click(); } }); // 时间戳转日期 form.on(submit(timestampToDatetime), function(data) { const timestamp data.field.timestamp, unit data.field.unit, timezone data.field.timezone; console.log(timestamp, timestamp, unit, unit, timezone, timezone); console.log(data.form, data.form, data.field, data.field); const dat2 new Date(); const offsetMinutes dat2.getTimezoneOffset(); console.log(offsetMinutes, offsetMinutes) if(timestamp ) { if(isCodeTrigger) { layer.msg(enter timestamp, {icon: 2}); } return; } isCodeTrigger false; // 输入合法性校验 if (!/^\d+$/.test(timestamp)) { layer.msg(timestamp must be a numeric type, {icon: 2}); return false; } try { formattedDate timestampToDate(Number(timestamp), unit, timezone); const timestampNum unit s ? parseInt(timestamp) * 1000 : parseInt(timestamp); console.log(formattedDate, formattedDate); form.val(timestampToDatetimeForm, { datetime: formattedDate}); } catch (e) { layer.msg(Conversion error. Please check your input. error msg: + e.message, {icon: 2}); } return false; }); // 日期转时间戳 form.on(submit(datetimeToTimestamp), function(data) { const datetime data.field.datetime, unit data.field.unit, timezone data.field.timezone; console.log(datetime, datetime, unit, unit, timezone, timezone); console.log(data.form, data.form, data.field, data.field); if(datetime ) { if(isCodeTrigger) { layer.msg(enter datetime YYYY-MM-DD HH:mm:ss, {icon: 2}); } return; } isCodeTrigger false; // 输入合法性校验 if (!/^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})$/.test(datetime)) { layer.msg(Failed: Date format is invalid, enter YYYY-MM-DD HH:mm:ss., {icon: 2}); return false; } try { timestamp dateToTimestamp(datetime, timezone, unit); console.log(timestamp, timestamp); form.val(datetimeToTimestampForm, { timestamp: timestamp}); } catch (e) { layer.msg(An error occurred during conversion. Please check the input, {icon: 2}); } return false; }); // 批量时间戳转日期 form.on(submit(batchTimestampToDatetime), function(data) { const resultTable $(#batchResult1) const tbody resultTable.find(tbody); tbody.empty(); const timestampText data.field.timestampText, unit data.field.unit, timezone data.field.timezone; const inputList timestampText.trim().split(\n); if(timestampText.trim() ) { if(isCodeTrigger) { layer.msg(enter timestamp numbers, {icon: 2}); } return; } isCodeTrigger false; try { inputList.forEach((item) > { const output timestampToDate(Number(item), unit, timezone); tbody.append(`tr>td>${item}/td>td>${output}/td>/tr>`); }); } catch (e) { layer.msg(Conversion error. Please check your input. error msg: + e.message, {icon: 2}); } return false; }); // 批量日期转时间戳 form.on(submit(batchDatetimeToTimestamp), function(data) { const resultTable $(#batchResult2) const tbody resultTable.find(tbody); tbody.empty(); const datetimeText data.field.datetimeText, unit data.field.unit, timezone data.field.timezone; const inputList datetimeText.trim().split(\n); if(datetimeText.trim() ) { if(isCodeTrigger) { layer.msg(enter YYYY-MM-DD HH:mm:ss, {icon: 2}); } return; } isCodeTrigger false; try { inputList.forEach((item) > { const output dateToTimestamp(item, timezone, unit); tbody.append(`tr>td>${item}/td>td>${output}/td>/tr>`); }); } catch (e) { layer.msg(An error occurred during conversion. Please check the input, {icon: 2}); } return false; }); form.render(); // 时间戳转换日期函数 (时间戳、单位, 转换出时区) function timestampToDate(timestamp, unit s, timezone UTC) { // 根据单位将时间戳转换为毫秒 let timestampInMs; if (unit s) { timestampInMs timestamp * 1000; } else if (unit ms) { timestampInMs timestamp; } else { throw new Error(The unit parameter must be either s or ms); } // 解析时区字符串 let parsedTimezone; if (/^UTC+-\d+$/.test(timezone)) { const offset parseInt(timezone.slice(3)); parsedTimezone `UTC${offset > 0 ? + : }${offset}`; } else if (timezone UTC) { parsedTimezone UTC; } else { throw new Error(Invalid time zone format. Please use formats such as UTC, UTC+1, UTC+8, etc); } // 创建 DateTime 对象并设置时区 const date DateTime.fromMillis(timestampInMs).setZone(parsedTimezone); // 检查日期是否有效 if (!date.isValid) { throw new Error(Invalid timestamp.); } // 格式化日期 return date.toFormat(yyyy-MM-dd HH:mm:ss); } // 日期转换时间戳函数 (日期,转换出时区,单位) function dateToTimestamp(datestr, timezoneInput UTC, unit s) { // 解析输入的时区 let timezone; if (timezoneInput UTC) { timezone UTC; } else if (/^UTC+-\d+$/.test(timezoneInput)) { const offset parseInt(timezoneInput.slice(3)); timezone `UTC${offset > 0 ? + : }${offset}`; } else { layer.msg(`Failed: Invalid time zone format, please enter a format such as UTC, UTC+8, UTC-8`, {icon: 2}); return; } // 解析输入的日期 const date DateTime.fromFormat(datestr, yyyy-MM-dd HH:mm:ss, { zone: timezone }); if (!date.isValid) { layer.msg(`Failed: The date format is invalid, enter YYYY-MM-DD HH:mm:ss.`, {icon: 2}); return; } // 根据选择的单位获取时间戳 let timestamp; if (unit s) { timestamp Math.floor(date.toMillis() / 1000); } else { timestamp date.toMillis(); } return timestamp; } // 获取时区偏移量 function getTimezoneOffset() { const date new Date(); const offsetMinutes date.getTimezoneOffset(); const offsetHour Math.abs(Math.floor(offsetMinutes / 60)).toString().padStart(2, 0); const offsetSign offsetMinutes 0 ? - : +; return `${offsetSign}${offsetHour}:${(offsetMinutes % 60).toString().padStart(2, 0)}`; } // 复制结果值功能 window.copyResultValue function(button) { const input button.previousElementSibling; const value input.value; if (!value || value input.placeholder) { layer.msg(No result to copy!, {icon: 2}); return; } if (navigator.clipboard) { navigator.clipboard.writeText(value) .then(() > { layer.msg(Copied successfully!, {icon: 1}); // 临时变更图标提供视觉反馈 const icon button.querySelector(i); const originalClass icon.className; icon.className fas fa-check; setTimeout(() > { icon.className originalClass; }, 1000); }) .catch(() > { layer.msg(Copy failed!, {icon: 2}); }); } else { // 降级方案 input.select(); try { document.execCommand(copy); layer.msg(Copied successfully!, {icon: 1}); } catch (err) { layer.msg(Copy failed!, {icon: 2}); } } }; function initPlaceholderAndTime() { // init 初始化时间戳 placeholder var initDate new Date(); var initTimestamp1 Math.floor(initDate.getTime()/1000); var initDate2 new Date(initDate.getFullYear() + -01-01); var initTimestamp2 Math.floor(initDate2.getTime()/1000); var initDatetime1 timestampToDate(initTimestamp1); var initDatetime2 timestampToDate(initTimestamp2); // 设置初始化的place holder // 获取 input 元素 var input document.getElementById(timestamp-input-single); // 设置 placeholder 属性 input.setAttribute(placeholder, initTimestamp2); // 获取 input 元素 var input document.getElementById(datetime-input-single); // 设置 placeholder 属性 input.setAttribute(placeholder, initDatetime2); // 获取 textarea 元素 var textarea document.getElementById(timestamp-textarea-multi); // 设置 placeholder 属性 textarea.setAttribute(placeholder, initTimestamp1, initTimestamp2.join(\n)); // 获取 textarea 元素 var textarea document.getElementById(datetime-textarea-multi); // 设置 placeholder 属性 textarea.setAttribute(placeholder, initDatetime1, initDatetime2.join(\n)); // init 初始化时间戳 placeholder end // init 设置当前浏览器默认时区 // 使用 Luxon 获取当前时区的 UTC 偏移值 const DateTime luxon.DateTime; const now DateTime.now(); const offset now.offset; const offsetHours Math.floor(offset / 60); console.log(offsetHours, offsetHours); let timezoneUTC UTC+0; if (offsetHours > 0) { timezoneUTC UTC+ + offsetHours; } else if (offsetHours 0) { timezoneUTC UTC- + offsetHours; } console.log(timezoneUTC, timezoneUTC) // 获取 select 元素 // 监听所有 class 为 a 的 select 元素的变化事件 document.querySelectorAll(select.timezone).forEach(function (select) { console.log(select); // 遍历 option 元素,找到匹配的 UTC 偏移值并设置为选中状态 for (let j 0; j select.options.length; j++) { select.value timezoneUTC; // 重新渲染 select 组件,使设置生效 form.render(select); } }); // init 设置当前浏览器默认时区 end } // 初始化 initPlaceholderAndTime();});// 平滑滚动到指定元素的功能function scrollToElement(elementId) { const element document.getElementById(elementId); if (element) { // 计算偏移量,考虑固定头部高度 const headerOffset 80; const elementPosition element.getBoundingClientRect().top; const offsetPosition elementPosition + window.pageYOffset - headerOffset; // 平滑滚动 window.scrollTo({ top: offsetPosition, behavior: smooth }); // 添加视觉反馈和焦点管理 element.style.transform scale(1.02); element.style.transition transform 0.3s ease; element.style.boxShadow 0 0 0 3px rgba(74, 144, 164, 0.3); // 数据埋点 - 记录用户导航行为 if (typeof gtag ! undefined) { gtag(event, navigation_click, { event_category: User_Navigation, event_label: elementId, value: 1 }); } setTimeout(() > { element.style.transform scale(1); element.style.boxShadow ; // 聚焦到第一个输入框以提升用户体验 const firstInput element.querySelector(inputtypetext:not(readonly)); if (firstInput) { firstInput.focus(); } }, 300); }}// 键盘快捷键支持document.addEventListener(keydown, function(e) { // Alt + 1: 跳转到单个转换 if (e.altKey && e.key 1) { e.preventDefault(); scrollToElement(single-converter); } // Alt + 2: 跳转到批量转换 else if (e.altKey && e.key 2) { e.preventDefault(); scrollToElement(batch-converter); } // Esc: 返回顶部 else if (e.key Escape) { window.scrollTo({ top: 0, behavior: smooth }); }});// 滚动进度指示器function createScrollIndicator() { const indicator document.createElement(div); indicator.className scroll-progress-indicator; indicator.innerHTML ` div classprogress-bar>/div> div classprogress-sections> div classsection-indicator data-targetsingle-converter title? $js_translationssection_single_title ?>>1/div> div classsection-indicator data-targetbatch-converter title? $js_translationssection_batch_title ?>>2/div> /div> `; document.body.appendChild(indicator); // 滚动进度更新 window.addEventListener(scroll, updateScrollProgress); // 点击指示器跳转 indicator.addEventListener(click, function(e) { if (e.target.classList.contains(section-indicator)) { const target e.target.dataset.target; scrollToElement(target); } });}function updateScrollProgress() { const scrolled window.pageYOffset; const maxScroll document.documentElement.scrollHeight - window.innerHeight; const progress (scrolled / maxScroll) * 100; const progressBar document.querySelector(.progress-bar); if (progressBar) { progressBar.style.width `${Math.min(progress, 100)}%`; } // 高亮当前区域指示器 const sections single-converter, batch-converter; const indicators document.querySelectorAll(.section-indicator); sections.forEach((sectionId, index) > { const section document.getElementById(sectionId); const indicator indicatorsindex; if (section && indicator) { const rect section.getBoundingClientRect(); const isInView rect.top 200 && rect.bottom > 200; indicator.classList.toggle(active, isInView); } });}// 页面加载完成后初始化增强功能document.addEventListener(DOMContentLoaded, function() { createScrollIndicator(); // 显示键盘快捷键提示(仅显示一次) if (!localStorage.getItem(shortcut-hint-shown)) { setTimeout(() > { const hint document.createElement(div); hint.className keyboard-shortcut-hint; hint.innerHTML ` div classhint-content> h4>? $js_translationskeyboard_tips_title ?>/h4> p>kbd>Alt + 1/kbd> ? $js_translationskeyboard_tip_single ?>/p> p>kbd>Alt + 2/kbd> ? $js_translationskeyboard_tip_batch ?>/p> p>kbd>Esc/kbd> ? $js_translationskeyboard_tip_top ?>/p> button onclickthis.parentElement.parentElement.remove()>? $js_translationsgot_it ?>/button> /div> `; document.body.appendChild(hint); setTimeout(() > { if (hint.parentElement) { hint.remove(); } }, 5000); localStorage.setItem(shortcut-hint-shown, true); }, 2000); }});/script>script>layui.use(layer, function () { var layer layui.layer; var $ layui.$; const DateTime luxon.DateTime; // 当前时间内容 var currentContent; // 初始化调用 updateCurrentTime(); // 标记侧边栏已加载,显示内容 setTimeout(function() { const sidebar document.querySelector(.modern-sidebar); if (sidebar) { sidebar.classList.add(loaded); } }, 100); // 每秒刷新一次 setInterval(updateCurrentTime, 1000); // 更新时间函数 function updateCurrentTime() { const DateTime luxon.DateTime; // 获取当前时间 const now DateTime.now(); // 获取当前日期时间,格式化为 YYYY-MM-DD HH:mm:ss const currentDateTime now.toFormat(yyyy-MM-dd HH:mm:ss); // 获取当前时区名称 const timezoneName now.zoneName; // 获取当前时区偏移量(以小时为单位) const timezoneOffsetHours now.offset / 60; const formattedOffset timezoneOffsetHours > 0 ? `+${timezoneOffsetHours.toString()}` : `${timezoneOffsetHours.toString()}`; // 拼接时区信息 const timezoneInfo `UTC${formattedOffset} (${timezoneName})`; // 获取当前秒级时间戳 const currentSecondTimestamp Math.floor(now.toMillis() / 1000); // 获取当前毫秒级时间戳 const currentMillisecondTimestamp now.toMillis(); // 渲染到页面 - 使用平滑更新避免抖动 currentContent currentSecondTimestamp, currentMillisecondTimestamp, currentDateTime, timezoneInfo.join(\n); // 安全更新DOM元素 const elements { currentDatetime: currentDateTime, currentTimestampSec: currentSecondTimestamp, currentTimestampMs: currentMillisecondTimestamp, currentTimestampZone: timezoneInfo }; Object.keys(elements).forEach(function(id) { const element document.getElementById(id); if (element && element.textContent ! elementsid) { element.textContent elementsid; } }); } // 当前日期复制功能 document.getElementById(copyBtn).addEventListener(click, async () > { copyText(currentContent); }); // 加入收藏功能 document.getElementById(favBtn).addEventListener(click, function() { const siteName document.title; const siteUrl window.location.href; // 检测浏览器是否支持添加收藏 if (window.addFavorite) { window.addFavorite(siteUrl, siteName); layer.msg(Added to browser favorites successfully!, {icon: 1}); } if (window.external && addFavorite in window.external) { window.external.addFavorite(siteUrl, document.title); layer.msg(Added to browser favorites successfully!, {icon: 1}); } else { // 部分浏览器替代方案 layer.msg(Please use browser shortcut (Ctrl+D / Cmd + D) to add to favorites!, {icon: 2}); } }); // 复制URL网站功能 document.getElementById(copyUrlBtn).addEventListener(click, function() { const url window.location.href; copyText(url); }); // 复制文本函数 function copyText(text) { if (navigator.clipboard) { navigator.clipboard.writeText(text) .then(() > { layer.msg(Copy successfully!, {icon: 1}); }) .catch(err > { layer.msg(Copy failed: + err.message, {icon: 2}); }); } else if (document.execCommand) { const textarea document.createElement(textarea); textarea.value text; textarea.style.position fixed; textarea.style.opacity 0; document.body.appendChild(textarea); textarea.select(); try { const successful document.execCommand(copy); layer.msg(successful ? Copy successfully! : Copy failed!, {icon: successful ? 1 : 2}); } catch (err) { layer.msg(Copy failed: + err.message, {icon: 2}); } finally { document.body.removeChild(textarea); } } else { layer.msg(This browser does not support the copy function. Please use another browser., {icon: 2}); } } // 文章页面特定功能 if (typeof window.articlePageFunctions ! undefined) { // 文章分享功能 $(document).on(click, #articleShareBtn, function() { var url window.location.href; var title document.title; if (navigator.share) { navigator.share({ title: title, url: url }); } else { copyText(url); } }); // 返回顶部功能 $(document).on(click, #backToTopBtn, function() { $(html, body).animate({scrollTop: 0}, 500); }); }});/script>style>/* 防抖动预设样式 */.modern-sidebar { min-height: 200px; opacity: 0; transition: opacity 0.3s ease;}.modern-sidebar.loaded { opacity: 1;}/* 时间戳值容器预设尺寸防止抖动 */.timestamp-value { min-width: 120px; display: inline-block; text-align: right;}/* 卡片内容预设最小高度 */.sidebar-card { min-height: 60px;}.timestamp-card .card-content { min-height: 160px;}.site-actions-card .card-content { min-height: 120px;}.tools-nav-card .card-content { min-height: 200px;}/* 进一步优化性能和防抖动 */.timestamp-value { font-variant-numeric: tabular-nums; letter-spacing: 0.5px;}/* 卡片动画优化 */.sidebar-card { transform: translateZ(0); backface-visibility: hidden; will-change: transform;}/* 减少重绘优化 */.timestamp-item { contain: layout style paint;}/style>style>/* Modern Sidebar CSS Variables - 温暖淡雅配色 */:root { --primary-color: #ff6b4a; --primary-hover: #ff5722; --secondary-color: #4fc3f7; --secondary-hover: #29b6f6; --success-color: #4caf50; --warning-color: #ff9800; --purple-primary: #9c27b0; --purple-secondary: #673ab7; --white: #ffffff; --text-color: #202124; --text-secondary: #5f6368; --dark-gray: #5f6368; --border-color: #e8eaed; --info-color: #2196f3; --font-family: Inter, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, sans-serif; --transition-base: 300ms cubic-bezier(0.4, 0, 0.2, 1); --shadow-lg: 0 4px 16px rgba(0, 0, 0, 0.06); --shadow-xl: 0 8px 24px rgba(0, 0, 0, 0.08);}/* Modern Sidebar Styles */.modern-sidebar { background: transparent; padding: 0; position: sticky; top: 20px; height: auto;}/* Sidebar Cards - iLovePDF风格 */.sidebar-card { background: var(--white); border-radius: 16px; box-shadow: var(--shadow-lg); margin-bottom: 24px; border: 1px solid var(--border-color); overflow: hidden; transition: all var(--transition-base);}.sidebar-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-xl); border-color: rgba(255, 107, 74, 0.2);}.card-header { padding: 20px 24px; background: var(--light-gray, #fafbfc); border-bottom: 1px solid var(--border-color); display: flex; align-items: center; gap: 12px; position: relative;}.header-icon { display: flex; align-items: center; justify-content: center; width: 36px; height: 36px; background: linear-gradient(135deg, var(--primary-color), var(--primary-hover)); border-radius: 12px; color: white; font-size: 14px; flex-shrink: 0; box-shadow: 0 2px 8px rgba(255, 107, 74, 0.2);}.card-title { font-size: 1.125rem; font-weight: 700; color: var(--text-color); margin: 0; flex: 1;}.card-content { padding: 0;}/* Timestamp Card Styles */.timestamp-card .header-icon { background: linear-gradient(135deg, var(--info-color), var(--secondary-hover));}.modern-copy-btn { padding: 6px 12px; background: var(--primary-color); color: white; border: none; border-radius: 8px; font-size: 0.75rem; font-weight: 600; cursor: pointer; transition: all 0.3s ease; display: flex; align-items: center; gap: 4px; text-transform: uppercase; letter-spacing: 0.5px;}.modern-copy-btn:hover { background: var(--primary-hover); transform: translateY(-1px); box-shadow: 0 4px 12px rgba(231, 76, 60, 0.3);}.timestamp-item { display: flex; justify-content: space-between; align-items: center; padding: 16px 24px; border-bottom: 1px solid rgba(0, 0, 0, 0.05); transition: all 0.3s ease;}.timestamp-item:last-child { border-bottom: none;}.timestamp-item:hover { background: rgba(52, 152, 219, 0.05);}.timestamp-label { font-size: 0.875rem; font-weight: 600; color: var(--dark-gray);}.timestamp-value { font-size: 0.875rem; font-weight: 700; color: var(--text-color); font-family: Monaco, Menlo, Ubuntu Mono, monospace; background: rgba(52, 152, 219, 0.1); padding: 4px 8px; border-radius: 6px;}/* Site Actions Card */.site-actions-card .header-icon { background: linear-gradient(135deg, var(--success-color), #2ecc71);}.action-item { display: flex; align-items: center; gap: 12px; padding: 16px 24px; border: none; background: none; color: var(--text-color); text-decoration: none; font-size: 0.9rem; font-weight: 500; cursor: pointer; transition: all 0.3s ease; border-bottom: 1px solid rgba(0, 0, 0, 0.05); width: 100%; text-align: left;}.action-item:last-child { border-bottom: none;}.action-item:hover { background: rgba(39, 174, 96, 0.05); color: var(--success-color); transform: translateX(4px);}.action-item i { width: 16px; text-align: center; color: var(--success-color);}/* Tools Navigation Card */.tools-nav-card .header-icon { background: linear-gradient(135deg, var(--warning-color), var(--primary-color));}.nav-item { display: flex; align-items: center; gap: 12px; padding: 16px 24px; color: var(--text-color); text-decoration: none; font-size: 0.9rem; font-weight: 500; transition: all 0.3s ease; border-bottom: 1px solid rgba(0, 0, 0, 0.05);}.nav-item:last-child { border-bottom: none;}.nav-item:hover { background: rgba(243, 156, 18, 0.05); color: var(--warning-color); transform: translateX(4px);}.nav-item i:first-child { width: 16px; text-align: center; color: var(--warning-color);}.nav-item span { flex: 1;}.nav-item i:last-child { font-size: 0.75rem; opacity: 0.5; transition: all 0.3s ease;}.nav-item:hover i:last-child { opacity: 1; transform: translateX(4px);}/* Related Articles Card */.related-articles-card .header-icon { background: linear-gradient(135deg, var(--purple-primary), var(--purple-secondary));}.article-item { display: flex; align-items: center; gap: 12px; padding: 16px 24px; color: var(--text-color); text-decoration: none; font-size: 0.9rem; font-weight: 500; transition: all 0.3s ease; border-bottom: 1px solid rgba(0, 0, 0, 0.05);}.article-item:last-child { border-bottom: none;}.article-item:hover { background: rgba(102, 126, 234, 0.05); color: var(--purple-primary); transform: translateX(4px);}.article-item i:first-child { width: 16px; text-align: center; color: var(--purple-primary);}.article-title { flex: 1; font-weight: 500;}.sidebar-card .article-title { font-size: 1rem;}.article-item i:last-child { font-size: 0.75rem; opacity: 0.5; transition: all 0.3s ease;}.article-item:hover i:last-child { opacity: 1; transform: translateX(4px);}/* Article Actions Card */.article-actions-card .header-icon { background: linear-gradient(135deg, var(--purple-primary), var(--purple-secondary));}/* Responsive Design */@media (max-width: 1024px) { .modern-sidebar { position: relative; top: 0; max-height: none; margin-top: 24px; } .sidebar-card { margin-bottom: 16px; }}@media (max-width: 768px) { .modern-sidebar { margin-top: 16px; } .sidebar-card { border-radius: 16px; } .card-header { padding: 20px; } .timestamp-item, .action-item, .nav-item, .article-item { padding: 14px 20px; }}/style>!-- 页脚脚本 -->script>// 页脚特定的脚本console.log(Footer script loaded);/script>/body>/html>!-- 页面特定的脚本 -->script>layui.use(form, element, layer, function () { var form layui.form , element layui.element , layer layui.layer; var $ layui.$; const DateTime luxon.DateTime; // 标记变量,用于判断是否是代码触发按钮点击 var isCodeTrigger false; // 代码触发按钮点击事件 document.querySelectorAll(.convert-btn).forEach(function (btn) { btn.addEventListener(click, function () { isCodeTrigger true; }) }); // 监听单位选择变化 form.on(select(unitChange), function(data) { console.log(unitChange, data); var formElement $(data.elem).closest(form); var button formElement.find(.convert-btn); if (button) { // 模拟点击按钮 isCodeTrigger false; button.click(); } }); // 监听时区选择变化 form.on(select(timezoneChange), function(data) { console.log(timezoneChange, data); var formElement $(data.elem).closest(form); var button formElement.find(.convert-btn); if (button) { // 模拟点击按钮 button.click(); } }); // 时间戳转日期 form.on(submit(timestampToDatetime), function(data) { const timestamp data.field.timestamp, unit data.field.unit, timezone data.field.timezone; console.log(timestamp, timestamp, unit, unit, timezone, timezone); console.log(data.form, data.form, data.field, data.field); const dat2 new Date(); const offsetMinutes dat2.getTimezoneOffset(); console.log(offsetMinutes, offsetMinutes) if(timestamp ) { if(isCodeTrigger) { layer.msg(enter timestamp, {icon: 2}); } return; } isCodeTrigger false; // 输入合法性校验 if (!/^\d+$/.test(timestamp)) { layer.msg(timestamp must be a numeric type, {icon: 2}); return false; } try { formattedDate timestampToDate(Number(timestamp), unit, timezone); const timestampNum unit s ? parseInt(timestamp) * 1000 : parseInt(timestamp); console.log(formattedDate, formattedDate); form.val(timestampToDatetimeForm, { datetime: formattedDate}); } catch (e) { layer.msg(Conversion error. Please check your input. error msg: + e.message, {icon: 2}); } return false; }); // 日期转时间戳 form.on(submit(datetimeToTimestamp), function(data) { const datetime data.field.datetime, unit data.field.unit, timezone data.field.timezone; console.log(datetime, datetime, unit, unit, timezone, timezone); console.log(data.form, data.form, data.field, data.field); if(datetime ) { if(isCodeTrigger) { layer.msg(enter datetime YYYY-MM-DD HH:mm:ss, {icon: 2}); } return; } isCodeTrigger false; // 输入合法性校验 if (!/^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})$/.test(datetime)) { layer.msg(Failed: Date format is invalid, enter YYYY-MM-DD HH:mm:ss., {icon: 2}); return false; } try { timestamp dateToTimestamp(datetime, timezone, unit); console.log(timestamp, timestamp); form.val(datetimeToTimestampForm, { timestamp: timestamp}); } catch (e) { layer.msg(An error occurred during conversion. Please check the input, {icon: 2}); } return false; }); // 批量时间戳转日期 form.on(submit(batchTimestampToDatetime), function(data) { const resultTable $(#batchResult1) const tbody resultTable.find(tbody); tbody.empty(); const timestampText data.field.timestampText, unit data.field.unit, timezone data.field.timezone; const inputList timestampText.trim().split(\n); if(timestampText.trim() ) { if(isCodeTrigger) { layer.msg(enter timestamp numbers, {icon: 2}); } return; } isCodeTrigger false; try { inputList.forEach((item) > { const output timestampToDate(Number(item), unit, timezone); tbody.append(`tr>td>${item}/td>td>${output}/td>/tr>`); }); } catch (e) { layer.msg(Conversion error. Please check your input. error msg: + e.message, {icon: 2}); } return false; }); // 批量日期转时间戳 form.on(submit(batchDatetimeToTimestamp), function(data) { const resultTable $(#batchResult2) const tbody resultTable.find(tbody); tbody.empty(); const datetimeText data.field.datetimeText, unit data.field.unit, timezone data.field.timezone; const inputList datetimeText.trim().split(\n); if(datetimeText.trim() ) { if(isCodeTrigger) { layer.msg(enter YYYY-MM-DD HH:mm:ss, {icon: 2}); } return; } isCodeTrigger false; try { inputList.forEach((item) > { const output dateToTimestamp(item, timezone, unit); tbody.append(`tr>td>${item}/td>td>${output}/td>/tr>`); }); } catch (e) { layer.msg(An error occurred during conversion. Please check the input, {icon: 2}); } return false; }); form.render(); // 时间戳转换日期函数 (时间戳、单位, 转换出时区) function timestampToDate(timestamp, unit s, timezone UTC) { // 根据单位将时间戳转换为毫秒 let timestampInMs; if (unit s) { timestampInMs timestamp * 1000; } else if (unit ms) { timestampInMs timestamp; } else { throw new Error(The unit parameter must be either s or ms); } // 解析时区字符串 let parsedTimezone; if (/^UTC+-\d+$/.test(timezone)) { const offset parseInt(timezone.slice(3)); parsedTimezone `UTC${offset > 0 ? + : }${offset}`; } else if (timezone UTC) { parsedTimezone UTC; } else { throw new Error(Invalid time zone format. Please use formats such as UTC, UTC+1, UTC+8, etc); } // 创建 DateTime 对象并设置时区 const date DateTime.fromMillis(timestampInMs).setZone(parsedTimezone); // 检查日期是否有效 if (!date.isValid) { throw new Error(Invalid timestamp.); } // 格式化日期 return date.toFormat(yyyy-MM-dd HH:mm:ss); } // 日期转换时间戳函数 (日期,转换出时区,单位) function dateToTimestamp(datestr, timezoneInput UTC, unit s) { // 解析输入的时区 let timezone; if (timezoneInput UTC) { timezone UTC; } else if (/^UTC+-\d+$/.test(timezoneInput)) { const offset parseInt(timezoneInput.slice(3)); timezone `UTC${offset > 0 ? + : }${offset}`; } else { layer.msg(`Failed: Invalid time zone format, please enter a format such as UTC, UTC+8, UTC-8`, {icon: 2}); return; } // 解析输入的日期 const date DateTime.fromFormat(datestr, yyyy-MM-dd HH:mm:ss, { zone: timezone }); if (!date.isValid) { layer.msg(`Failed: The date format is invalid, enter YYYY-MM-DD HH:mm:ss.`, {icon: 2}); return; } // 根据选择的单位获取时间戳 let timestamp; if (unit s) { timestamp Math.floor(date.toMillis() / 1000); } else { timestamp date.toMillis(); } return timestamp; } // 获取时区偏移量 function getTimezoneOffset() { const date new Date(); const offsetMinutes date.getTimezoneOffset(); const offsetHour Math.abs(Math.floor(offsetMinutes / 60)).toString().padStart(2, 0); const offsetSign offsetMinutes 0 ? - : +; return `${offsetSign}${offsetHour}:${(offsetMinutes % 60).toString().padStart(2, 0)}`; } // 复制结果值功能 window.copyResultValue function(button) { const input button.previousElementSibling; const value input.value; if (!value || value input.placeholder) { layer.msg(No result to copy!, {icon: 2}); return; } if (navigator.clipboard) { navigator.clipboard.writeText(value) .then(() > { layer.msg(Copied successfully!, {icon: 1}); // 临时变更图标提供视觉反馈 const icon button.querySelector(i); const originalClass icon.className; icon.className fas fa-check; setTimeout(() > { icon.className originalClass; }, 1000); }) .catch(() > { layer.msg(Copy failed!, {icon: 2}); }); } else { // 降级方案 input.select(); try { document.execCommand(copy); layer.msg(Copied successfully!, {icon: 1}); } catch (err) { layer.msg(Copy failed!, {icon: 2}); } } }; function initPlaceholderAndTime() { // init 初始化时间戳 placeholder var initDate new Date(); var initTimestamp1 Math.floor(initDate.getTime()/1000); var initDate2 new Date(initDate.getFullYear() + -01-01); var initTimestamp2 Math.floor(initDate2.getTime()/1000); var initDatetime1 timestampToDate(initTimestamp1); var initDatetime2 timestampToDate(initTimestamp2); // 设置初始化的place holder // 获取 input 元素 var input document.getElementById(timestamp-input-single); // 设置 placeholder 属性 input.setAttribute(placeholder, initTimestamp2); // 获取 input 元素 var input document.getElementById(datetime-input-single); // 设置 placeholder 属性 input.setAttribute(placeholder, initDatetime2); // 获取 textarea 元素 var textarea document.getElementById(timestamp-textarea-multi); // 设置 placeholder 属性 textarea.setAttribute(placeholder, initTimestamp1, initTimestamp2.join(\n)); // 获取 textarea 元素 var textarea document.getElementById(datetime-textarea-multi); // 设置 placeholder 属性 textarea.setAttribute(placeholder, initDatetime1, initDatetime2.join(\n)); // init 初始化时间戳 placeholder end // init 设置当前浏览器默认时区 // 使用 Luxon 获取当前时区的 UTC 偏移值 const DateTime luxon.DateTime; const now DateTime.now(); const offset now.offset; const offsetHours Math.floor(offset / 60); console.log(offsetHours, offsetHours); let timezoneUTC UTC+0; if (offsetHours > 0) { timezoneUTC UTC+ + offsetHours; } else if (offsetHours 0) { timezoneUTC UTC- + offsetHours; } console.log(timezoneUTC, timezoneUTC) // 获取 select 元素 // 监听所有 class 为 a 的 select 元素的变化事件 document.querySelectorAll(select.timezone).forEach(function (select) { console.log(select); // 遍历 option 元素,找到匹配的 UTC 偏移值并设置为选中状态 for (let j 0; j select.options.length; j++) { select.value timezoneUTC; // 重新渲染 select 组件,使设置生效 form.render(select); } }); // init 设置当前浏览器默认时区 end } // 初始化 initPlaceholderAndTime();});// 平滑滚动到指定元素的功能function scrollToElement(elementId) { const element document.getElementById(elementId); if (element) { // 计算偏移量,考虑固定头部高度 const headerOffset 80; const elementPosition element.getBoundingClientRect().top; const offsetPosition elementPosition + window.pageYOffset - headerOffset; // 平滑滚动 window.scrollTo({ top: offsetPosition, behavior: smooth }); // 添加视觉反馈和焦点管理 element.style.transform scale(1.02); element.style.transition transform 0.3s ease; element.style.boxShadow 0 0 0 3px rgba(74, 144, 164, 0.3); // 数据埋点 - 记录用户导航行为 if (typeof gtag ! undefined) { gtag(event, navigation_click, { event_category: User_Navigation, event_label: elementId, value: 1 }); } setTimeout(() > { element.style.transform scale(1); element.style.boxShadow ; // 聚焦到第一个输入框以提升用户体验 const firstInput element.querySelector(inputtypetext:not(readonly)); if (firstInput) { firstInput.focus(); } }, 300); }}// 键盘快捷键支持document.addEventListener(keydown, function(e) { // Alt + 1: 跳转到单个转换 if (e.altKey && e.key 1) { e.preventDefault(); scrollToElement(single-converter); } // Alt + 2: 跳转到批量转换 else if (e.altKey && e.key 2) { e.preventDefault(); scrollToElement(batch-converter); } // Esc: 返回顶部 else if (e.key Escape) { window.scrollTo({ top: 0, behavior: smooth }); }});// 滚动进度指示器function createScrollIndicator() { const indicator document.createElement(div); indicator.className scroll-progress-indicator; indicator.innerHTML ` div classprogress-bar>/div> div classprogress-sections> div classsection-indicator data-targetsingle-converter title? $js_translationssection_single_title ?>>1/div> div classsection-indicator data-targetbatch-converter title? $js_translationssection_batch_title ?>>2/div> /div> `; document.body.appendChild(indicator); // 滚动进度更新 window.addEventListener(scroll, updateScrollProgress); // 点击指示器跳转 indicator.addEventListener(click, function(e) { if (e.target.classList.contains(section-indicator)) { const target e.target.dataset.target; scrollToElement(target); } });}function updateScrollProgress() { const scrolled window.pageYOffset; const maxScroll document.documentElement.scrollHeight - window.innerHeight; const progress (scrolled / maxScroll) * 100; const progressBar document.querySelector(.progress-bar); if (progressBar) { progressBar.style.width `${Math.min(progress, 100)}%`; } // 高亮当前区域指示器 const sections single-converter, batch-converter; const indicators document.querySelectorAll(.section-indicator); sections.forEach((sectionId, index) > { const section document.getElementById(sectionId); const indicator indicatorsindex; if (section && indicator) { const rect section.getBoundingClientRect(); const isInView rect.top 200 && rect.bottom > 200; indicator.classList.toggle(active, isInView); } });}// 页面加载完成后初始化增强功能document.addEventListener(DOMContentLoaded, function() { createScrollIndicator(); // 显示键盘快捷键提示(仅显示一次) if (!localStorage.getItem(shortcut-hint-shown)) { setTimeout(() > { const hint document.createElement(div); hint.className keyboard-shortcut-hint; hint.innerHTML ` div classhint-content> h4>? $js_translationskeyboard_tips_title ?>/h4> p>kbd>Alt + 1/kbd> ? $js_translationskeyboard_tip_single ?>/p> p>kbd>Alt + 2/kbd> ? $js_translationskeyboard_tip_batch ?>/p> p>kbd>Esc/kbd> ? $js_translationskeyboard_tip_top ?>/p> button onclickthis.parentElement.parentElement.remove()>? $js_translationsgot_it ?>/button> /div> `; document.body.appendChild(hint); setTimeout(() > { if (hint.parentElement) { hint.remove(); } }, 5000); localStorage.setItem(shortcut-hint-shown, true); }, 2000); }});/script>script>layui.use(layer, function () { var layer layui.layer; var $ layui.$; const DateTime luxon.DateTime; // 当前时间内容 var currentContent; // 初始化调用 updateCurrentTime(); // 标记侧边栏已加载,显示内容 setTimeout(function() { const sidebar document.querySelector(.modern-sidebar); if (sidebar) { sidebar.classList.add(loaded); } }, 100); // 每秒刷新一次 setInterval(updateCurrentTime, 1000); // 更新时间函数 function updateCurrentTime() { const DateTime luxon.DateTime; // 获取当前时间 const now DateTime.now(); // 获取当前日期时间,格式化为 YYYY-MM-DD HH:mm:ss const currentDateTime now.toFormat(yyyy-MM-dd HH:mm:ss); // 获取当前时区名称 const timezoneName now.zoneName; // 获取当前时区偏移量(以小时为单位) const timezoneOffsetHours now.offset / 60; const formattedOffset timezoneOffsetHours > 0 ? `+${timezoneOffsetHours.toString()}` : `${timezoneOffsetHours.toString()}`; // 拼接时区信息 const timezoneInfo `UTC${formattedOffset} (${timezoneName})`; // 获取当前秒级时间戳 const currentSecondTimestamp Math.floor(now.toMillis() / 1000); // 获取当前毫秒级时间戳 const currentMillisecondTimestamp now.toMillis(); // 渲染到页面 - 使用平滑更新避免抖动 currentContent currentSecondTimestamp, currentMillisecondTimestamp, currentDateTime, timezoneInfo.join(\n); // 安全更新DOM元素 const elements { currentDatetime: currentDateTime, currentTimestampSec: currentSecondTimestamp, currentTimestampMs: currentMillisecondTimestamp, currentTimestampZone: timezoneInfo }; Object.keys(elements).forEach(function(id) { const element document.getElementById(id); if (element && element.textContent ! elementsid) { element.textContent elementsid; } }); } // 当前日期复制功能 document.getElementById(copyBtn).addEventListener(click, async () > { copyText(currentContent); }); // 加入收藏功能 document.getElementById(favBtn).addEventListener(click, function() { const siteName document.title; const siteUrl window.location.href; // 检测浏览器是否支持添加收藏 if (window.addFavorite) { window.addFavorite(siteUrl, siteName); layer.msg(Added to browser favorites successfully!, {icon: 1}); } if (window.external && addFavorite in window.external) { window.external.addFavorite(siteUrl, document.title); layer.msg(Added to browser favorites successfully!, {icon: 1}); } else { // 部分浏览器替代方案 layer.msg(Please use browser shortcut (Ctrl+D / Cmd + D) to add to favorites!, {icon: 2}); } }); // 复制URL网站功能 document.getElementById(copyUrlBtn).addEventListener(click, function() { const url window.location.href; copyText(url); }); // 复制文本函数 function copyText(text) { if (navigator.clipboard) { navigator.clipboard.writeText(text) .then(() > { layer.msg(Copy successfully!, {icon: 1}); }) .catch(err > { layer.msg(Copy failed: + err.message, {icon: 2}); }); } else if (document.execCommand) { const textarea document.createElement(textarea); textarea.value text; textarea.style.position fixed; textarea.style.opacity 0; document.body.appendChild(textarea); textarea.select(); try { const successful document.execCommand(copy); layer.msg(successful ? Copy successfully! : Copy failed!, {icon: successful ? 1 : 2}); } catch (err) { layer.msg(Copy failed: + err.message, {icon: 2}); } finally { document.body.removeChild(textarea); } } else { layer.msg(This browser does not support the copy function. Please use another browser., {icon: 2}); } } // 文章页面特定功能 if (typeof window.articlePageFunctions ! undefined) { // 文章分享功能 $(document).on(click, #articleShareBtn, function() { var url window.location.href; var title document.title; if (navigator.share) { navigator.share({ title: title, url: url }); } else { copyText(url); } }); // 返回顶部功能 $(document).on(click, #backToTopBtn, function() { $(html, body).animate({scrollTop: 0}, 500); }); }});/script>style>/* 防抖动预设样式 */.modern-sidebar { min-height: 200px; opacity: 0; transition: opacity 0.3s ease;}.modern-sidebar.loaded { opacity: 1;}/* 时间戳值容器预设尺寸防止抖动 */.timestamp-value { min-width: 120px; display: inline-block; text-align: right;}/* 卡片内容预设最小高度 */.sidebar-card { min-height: 60px;}.timestamp-card .card-content { min-height: 160px;}.site-actions-card .card-content { min-height: 120px;}.tools-nav-card .card-content { min-height: 200px;}/* 进一步优化性能和防抖动 */.timestamp-value { font-variant-numeric: tabular-nums; letter-spacing: 0.5px;}/* 卡片动画优化 */.sidebar-card { transform: translateZ(0); backface-visibility: hidden; will-change: transform;}/* 减少重绘优化 */.timestamp-item { contain: layout style paint;}/style>style>/* Modern Sidebar CSS Variables - 温暖淡雅配色 */:root { --primary-color: #ff6b4a; --primary-hover: #ff5722; --secondary-color: #4fc3f7; --secondary-hover: #29b6f6; --success-color: #4caf50; --warning-color: #ff9800; --purple-primary: #9c27b0; --purple-secondary: #673ab7; --white: #ffffff; --text-color: #202124; --text-secondary: #5f6368; --dark-gray: #5f6368; --border-color: #e8eaed; --info-color: #2196f3; --font-family: Inter, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, sans-serif; --transition-base: 300ms cubic-bezier(0.4, 0, 0.2, 1); --shadow-lg: 0 4px 16px rgba(0, 0, 0, 0.06); --shadow-xl: 0 8px 24px rgba(0, 0, 0, 0.08);}/* Modern Sidebar Styles */.modern-sidebar { background: transparent; padding: 0; position: sticky; top: 20px; height: auto;}/* Sidebar Cards - iLovePDF风格 */.sidebar-card { background: var(--white); border-radius: 16px; box-shadow: var(--shadow-lg); margin-bottom: 24px; border: 1px solid var(--border-color); overflow: hidden; transition: all var(--transition-base);}.sidebar-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-xl); border-color: rgba(255, 107, 74, 0.2);}.card-header { padding: 20px 24px; background: var(--light-gray, #fafbfc); border-bottom: 1px solid var(--border-color); display: flex; align-items: center; gap: 12px; position: relative;}.header-icon { display: flex; align-items: center; justify-content: center; width: 36px; height: 36px; background: linear-gradient(135deg, var(--primary-color), var(--primary-hover)); border-radius: 12px; color: white; font-size: 14px; flex-shrink: 0; box-shadow: 0 2px 8px rgba(255, 107, 74, 0.2);}.card-title { font-size: 1.125rem; font-weight: 700; color: var(--text-color); margin: 0; flex: 1;}.card-content { padding: 0;}/* Timestamp Card Styles */.timestamp-card .header-icon { background: linear-gradient(135deg, var(--info-color), var(--secondary-hover));}.modern-copy-btn { padding: 6px 12px; background: var(--primary-color); color: white; border: none; border-radius: 8px; font-size: 0.75rem; font-weight: 600; cursor: pointer; transition: all 0.3s ease; display: flex; align-items: center; gap: 4px; text-transform: uppercase; letter-spacing: 0.5px;}.modern-copy-btn:hover { background: var(--primary-hover); transform: translateY(-1px); box-shadow: 0 4px 12px rgba(231, 76, 60, 0.3);}.timestamp-item { display: flex; justify-content: space-between; align-items: center; padding: 16px 24px; border-bottom: 1px solid rgba(0, 0, 0, 0.05); transition: all 0.3s ease;}.timestamp-item:last-child { border-bottom: none;}.timestamp-item:hover { background: rgba(52, 152, 219, 0.05);}.timestamp-label { font-size: 0.875rem; font-weight: 600; color: var(--dark-gray);}.timestamp-value { font-size: 0.875rem; font-weight: 700; color: var(--text-color); font-family: Monaco, Menlo, Ubuntu Mono, monospace; background: rgba(52, 152, 219, 0.1); padding: 4px 8px; border-radius: 6px;}/* Site Actions Card */.site-actions-card .header-icon { background: linear-gradient(135deg, var(--success-color), #2ecc71);}.action-item { display: flex; align-items: center; gap: 12px; padding: 16px 24px; border: none; background: none; color: var(--text-color); text-decoration: none; font-size: 0.9rem; font-weight: 500; cursor: pointer; transition: all 0.3s ease; border-bottom: 1px solid rgba(0, 0, 0, 0.05); width: 100%; text-align: left;}.action-item:last-child { border-bottom: none;}.action-item:hover { background: rgba(39, 174, 96, 0.05); color: var(--success-color); transform: translateX(4px);}.action-item i { width: 16px; text-align: center; color: var(--success-color);}/* Tools Navigation Card */.tools-nav-card .header-icon { background: linear-gradient(135deg, var(--warning-color), var(--primary-color));}.nav-item { display: flex; align-items: center; gap: 12px; padding: 16px 24px; color: var(--text-color); text-decoration: none; font-size: 0.9rem; font-weight: 500; transition: all 0.3s ease; border-bottom: 1px solid rgba(0, 0, 0, 0.05);}.nav-item:last-child { border-bottom: none;}.nav-item:hover { background: rgba(243, 156, 18, 0.05); color: var(--warning-color); transform: translateX(4px);}.nav-item i:first-child { width: 16px; text-align: center; color: var(--warning-color);}.nav-item span { flex: 1;}.nav-item i:last-child { font-size: 0.75rem; opacity: 0.5; transition: all 0.3s ease;}.nav-item:hover i:last-child { opacity: 1; transform: translateX(4px);}/* Related Articles Card */.related-articles-card .header-icon { background: linear-gradient(135deg, var(--purple-primary), var(--purple-secondary));}.article-item { display: flex; align-items: center; gap: 12px; padding: 16px 24px; color: var(--text-color); text-decoration: none; font-size: 0.9rem; font-weight: 500; transition: all 0.3s ease; border-bottom: 1px solid rgba(0, 0, 0, 0.05);}.article-item:last-child { border-bottom: none;}.article-item:hover { background: rgba(102, 126, 234, 0.05); color: var(--purple-primary); transform: translateX(4px);}.article-item i:first-child { width: 16px; text-align: center; color: var(--purple-primary);}.article-title { flex: 1; font-weight: 500;}.sidebar-card .article-title { font-size: 1rem;}.article-item i:last-child { font-size: 0.75rem; opacity: 0.5; transition: all 0.3s ease;}.article-item:hover i:last-child { opacity: 1; transform: translateX(4px);}/* Article Actions Card */.article-actions-card .header-icon { background: linear-gradient(135deg, var(--purple-primary), var(--purple-secondary));}/* Responsive Design */@media (max-width: 1024px) { .modern-sidebar { position: relative; top: 0; max-height: none; margin-top: 24px; } .sidebar-card { margin-bottom: 16px; }}@media (max-width: 768px) { .modern-sidebar { margin-top: 16px; } .sidebar-card { border-radius: 16px; } .card-header { padding: 20px; } .timestamp-item, .action-item, .nav-item, .article-item { padding: 14px 20px; }}/style>/div>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]