zxlie пре 4 месеци
родитељ
комит
2f911bae0c

+ 9 - 0
apps/background/tools.js

@@ -263,6 +263,15 @@ let toolMap = {
             icon: '🖼️',
             text: '海报快速生成'
         }]
+    },
+    'datetime-calc': {
+        name: '时间戳计算器',
+        tips: '支持多种时间格式解析、批量转换、时区转换、数据库格式生成等高级时间处理功能',
+        menuConfig: [{
+            icon: '⏱️',
+            text: '时间戳计算器',
+            contexts: ['page', 'selection', 'editable']
+        }]
     }
 };
 

+ 1 - 1
apps/chrome.json

@@ -1,7 +1,7 @@
 {
   "name": "FeHelper(前端助手)-Dev",
   "short_name": "FeHelper",
-  "version": "2025.5.2020",
+  "version": "2025.6.1020",
   "manifest_version": 3,
   "description": "JSON自动格式化、手动格式化,支持排序、解码、下载等,更多功能可在配置页按需安装!",
   "icons": {

+ 60 - 75
apps/ts-bak/index.css → apps/datetime-calc/index.css

@@ -6,39 +6,13 @@
     background: #f8f9fa;
 }
 
-/* 顶部导航栏样式 */
-.panel-heading {
-    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
-    border: none;
-    color: white;
-}
-
-.panel-heading .panel-title {
-    color: white;
-    font-size: 18px;
-    font-weight: 600;
-}
-
-.panel-heading .panel-title a {
-    color: white;
-    text-decoration: none;
-}
 
-.panel-heading .panel-title a:hover {
-    color: #e3f2fd;
-}
-
-.x-donate-area {
-    float: right;
-    margin-top: -5px;
-}
 
 /* 标签页容器样式 */
 .tab-container {
     background: white;
     box-shadow: 0 2px 10px rgba(0,0,0,0.1);
     border-radius: 0 0 8px 8px;
-    overflow: hidden;
 }
 
 /* 标签页导航样式 */
@@ -792,28 +766,23 @@
 
 /* 时区选择器优化布局 */
 .timezone-selectors {
-    display: grid;
-    grid-template-columns: 1fr 1fr;
-    gap: 15px;
-    align-items: end;
-}
-
-/* 时区转换模块特殊宽度设置 */
-.timezone-input-group .time-input-section .form-control {
-    width: 100% !important;
-}
-
-.timezone-selectors select.form-control {
-    width: 50% !important;
-    min-width: 180px;
+    display: flex;
+    gap: 12px;
+    width: 100%;
 }
 
-.from-timezone,
-.to-timezone {
+.timezone-selectors .from-timezone,
+.timezone-selectors .to-timezone {
+    flex: 1 1 0;
+    min-width: 0;
     display: flex;
     flex-direction: column;
-    gap: 8px;
-    align-items: flex-start;
+}
+
+.timezone-selectors .form-control {
+    width: 100%;
+    min-width: 0;
+    box-sizing: border-box;
 }
 
 /* 时区选择器容器样式 */
@@ -832,9 +801,19 @@
 
 /* 数据库输入组网格布局 */
 .db-input-group {
-    display: grid;
-    grid-template-columns: 1fr;
-    gap: 20px;
+    width: 100%;
+    box-sizing: border-box;
+}
+
+.db-input-group .time-db-input,
+.db-input-group .db-type-selector {
+    width: 100%;
+    margin-bottom: 12px;
+}
+
+.db-input-group .form-control {
+    width: 100%;
+    box-sizing: border-box;
 }
 
 /* 表单标签统一样式 */
@@ -896,7 +875,7 @@
     background-color: #ffffff;
     width: 100%;
     box-sizing: border-box;
-    min-height: 44px;
+    min-height: 50px;
 }
 
 /* input输入框统一100%宽度 */
@@ -962,12 +941,13 @@
 
 /* 时区和数据库特殊布局优化 */
 .timezone-input-group .time-input-section {
-    margin-bottom: 5px;
+    width: 100%;
+    margin-bottom: 12px;
 }
 
-.db-input-group .time-db-input,
-.db-input-group .db-type-selector {
-    margin-bottom: 5px;
+.timezone-input-group .form-control {
+    width: 100%;
+    box-sizing: border-box;
 }
 
 /* 单行布局:基准时间 + 操作 + 数量 + 单位 */
@@ -1128,7 +1108,7 @@
 }
 
 .result-stats {
-    margin-bottom: 15px;
+    color: #495057;
 }
 
 .result-stats .badge {
@@ -1486,41 +1466,46 @@
 }
 
 .timezone-input-group {
-    display: flex;
-    gap: 15px;
-    align-items: center;
-    flex-wrap: wrap;
-    margin-bottom: 20px;
+    width: 100%;
+    box-sizing: border-box;
 }
 
-.time-input-section {
-    flex: 2;
-    min-width: 200px;
+.timezone-input-group .time-input-section {
+    width: 100%;
+    margin-bottom: 12px;
 }
 
-.timezone-time-input {
-    border-radius: 8px;
-    border: 2px solid #cbd5e0;
+.timezone-input-group .form-control {
+    width: 100%;
+    box-sizing: border-box;
 }
 
+/* 并排布局,两个select各占50% */
 .timezone-selectors {
     display: flex;
-    gap: 10px;
-    align-items: center;
-    flex: 3;
+    gap: 12px;
+    width: 100%;
 }
 
-.from-timezone, .to-timezone {
+.timezone-selectors .from-timezone,
+.timezone-selectors .to-timezone {
+    flex: 1 1 0;
+    min-width: 0;
     display: flex;
-    align-items: center;
-    gap: 8px;
-    flex: 1;
+    flex-direction: column;
 }
 
-.timezone-label {
-    color: #4a5568;
-    font-weight: 500;
-    min-width: 30px;
+.timezone-selectors .form-control {
+    width: 100%;
+    min-width: 0;
+    box-sizing: border-box;
+}
+
+.timezone-selectors .form-label {
+    font-size: 14px;
+    font-weight: 600;
+    color: #495057;
+    margin-bottom: 5px;
 }
 
 .timezone-arrow {

+ 63 - 19
apps/ts-bak/index.html → apps/datetime-calc/index.html

@@ -1,7 +1,7 @@
 <!DOCTYPE HTML>
 <html lang="zh-CN">
     <head>
-        <title>专业时间戳工具 - FeHelper</title>
+        <title>时间戳计算器 - FeHelper</title>
         <meta charset="UTF-8">
         <meta name="viewport" content="width=device-width, initial-scale=1.0">
         <link rel="shortcut icon" href="../static/img/favicon.ico">
@@ -10,18 +10,13 @@
     <body>
 
     <div class="wrapper" id="app">
-        <!-- 顶部导航栏 -->
         <div class="panel panel-default" style="margin-bottom: 0px;">
             <div class="panel-heading">
                 <h3 class="panel-title">
                     <a href="https://www.baidufe.com/fehelper/index/index.html" target="_blank" class="x-a-high">
-                        <img src="../static/img/fe-16.png" alt="fehelper"/> FeHelper</a>:专业时间戳工具
-                    
-                    <span class="x-donate-area">
-                        <a href="https://www.baidufe.com/fehelper/donate.html" target="_blank" class="btn btn-primary btn-sm">
-                            💖 打赏
-                        </a>
-                    </span>
+                        <img src="../static/img/fe-16.png" alt="fehelper"/> FeHelper</a>:时间戳计算器
+                    <a href="#" class="x-donate-link"><i class="nav-icon">❤&nbsp;</i>打赏鼓励</a>
+                    <a class="x-other-tools"><i class="icon-plus-circle"></i> 探索更多实用工具 <span class="tool-market-badge">工具市场</span></a>
                 </h3>
             </div>
         </div>
@@ -273,7 +268,7 @@
                 <div role="tabpanel" class="tab-pane" id="batch-converter" style="display: none;">
                     <div class="tool-section">
                         <h4 class="section-title">📊 批量转换器</h4>
-                        <p class="section-desc">批量处理时间数据,支持CSV导入导出</p>
+                        <p class="section-desc">批量处理时间数据</p>
                         
                         <div class="main-layout">
                             <!-- 左侧:输入和控制 -->
@@ -288,7 +283,6 @@
                                                  placeholder="输入多个时间值,每行一个:&#10;1699999999&#10;2024-01-15 10:30:45&#10;now&#10;today&#10;2024/01/15"></textarea>
                                         <div class="batch-actions">
                                             <button class="btn btn-primary batch-convert-btn">🔄 批量转换</button>
-                                            <button class="btn btn-success batch-export-btn">📥 导出结果</button>
                                             <button class="btn btn-secondary batch-clear-btn">🗑️ 清空</button>
                                         </div>
                                     </div>
@@ -333,19 +327,69 @@
                                             <div class="from-timezone">
                                                 <label class="form-label">从时区</label>
                                                 <select class="form-control from-timezone-select">
-                                                    <option value="Asia/Shanghai">🇨🇳 北京时间 (GMT+8)</option>
-                                                    <option value="America/New_York">🇺🇸 纽约时间 (EST)</option>
-                                                    <option value="Europe/London">🇬🇧 伦敦时间 (GMT)</option>
-                                                    <option value="Asia/Tokyo">🇯🇵 东京时间 (JST)</option>
+                                                    <option value="Pacific/Midway">🇺🇸 中途岛 (GMT-11)</option>
+                                                    <option value="America/Adak">🇺🇸 阿达克 (GMT-10)</option>
+                                                    <option value="Pacific/Honolulu">🇺🇸 夏威夷 (GMT-10)</option>
+                                                    <option value="America/Anchorage">🇺🇸 安克雷奇 (GMT-9)</option>
+                                                    <option value="America/Los_Angeles">🇺🇸 洛杉矶 (PST, GMT-8)</option>
+                                                    <option value="America/Denver">🇺🇸 丹佛 (MST, GMT-7)</option>
+                                                    <option value="America/Chicago">🇺🇸 芝加哥 (CST, GMT-6)</option>
+                                                    <option value="America/New_York">🇺🇸 纽约 (EST, GMT-5)</option>
+                                                    <option value="America/Caracas">🇻🇪 加拉加斯 (GMT-4)</option>
+                                                    <option value="America/Santiago">🇨🇱 圣地亚哥 (GMT-4)</option>
+                                                    <option value="America/Halifax">🇨🇦 哈利法克斯 (GMT-4)</option>
+                                                    <option value="America/St_Johns">🇨🇦 圣约翰斯 (GMT-3:30)</option>
+                                                    <option value="America/Argentina/Buenos_Aires">🇦🇷 布宜诺斯艾利斯 (GMT-3)</option>
+                                                    <option value="America/Sao_Paulo">🇧🇷 圣保罗 (GMT-3)</option>
+                                                    <option value="Atlantic/Azores">🇵🇹 亚速尔群岛 (GMT-1)</option>
+                                                    <option value="Europe/London">🇬🇧 伦敦 (GMT+0)</option>
+                                                    <option value="Europe/Berlin">🇩🇪 柏林 (CET, GMT+1)</option>
+                                                    <option value="Europe/Paris">🇫🇷 巴黎 (CET, GMT+1)</option>
+                                                    <option value="Europe/Athens">🇬🇷 雅典 (EET, GMT+2)</option>
+                                                    <option value="Europe/Istanbul">🇹🇷 伊斯坦布尔 (GMT+3)</option>
+                                                    <option value="Europe/Moscow">🇷🇺 莫斯科 (GMT+3)</option>
+                                                    <option value="Asia/Dubai">🇦🇪 迪拜 (GMT+4)</option>
+                                                    <option value="Asia/Karachi">🇵🇰 卡拉奇 (GMT+5)</option>
+                                                    <option value="Asia/Dhaka">🇧🇩 达卡 (GMT+6)</option>
+                                                    <option value="Asia/Bangkok">🇹🇭 曼谷 (GMT+7)</option>
+                                                    <option value="Asia/Shanghai">🇨🇳 北京 (GMT+8)</option>
+                                                    <option value="Asia/Tokyo">🇯🇵 东京 (GMT+9)</option>
+                                                    <option value="Australia/Sydney">🇦🇺 悉尼 (GMT+10)</option>
+                                                    <option value="Pacific/Auckland">🇳🇿 奥克兰 (GMT+12)</option>
                                                 </select>
                                             </div>
                                             <div class="to-timezone">
                                                 <label class="form-label">到时区</label>
                                                 <select class="form-control to-timezone-select">
-                                                    <option value="America/New_York">🇺🇸 纽约时间 (EST)</option>
-                                                    <option value="Asia/Shanghai">🇨🇳 北京时间 (GMT+8)</option>
-                                                    <option value="Europe/London">🇬🇧 伦敦时间 (GMT)</option>
-                                                    <option value="Asia/Tokyo">🇯🇵 东京时间 (JST)</option>
+                                                    <option value="Pacific/Midway">🇺🇸 中途岛 (GMT-11)</option>
+                                                    <option value="America/Adak">🇺🇸 阿达克 (GMT-10)</option>
+                                                    <option value="Pacific/Honolulu">🇺🇸 夏威夷 (GMT-10)</option>
+                                                    <option value="America/Anchorage">🇺🇸 安克雷奇 (GMT-9)</option>
+                                                    <option value="America/Los_Angeles">🇺🇸 洛杉矶 (PST, GMT-8)</option>
+                                                    <option value="America/Denver">🇺🇸 丹佛 (MST, GMT-7)</option>
+                                                    <option value="America/Chicago">🇺🇸 芝加哥 (CST, GMT-6)</option>
+                                                    <option value="America/New_York">🇺🇸 纽约 (EST, GMT-5)</option>
+                                                    <option value="America/Caracas">🇻🇪 加拉加斯 (GMT-4)</option>
+                                                    <option value="America/Santiago">🇨🇱 圣地亚哥 (GMT-4)</option>
+                                                    <option value="America/Halifax">🇨🇦 哈利法克斯 (GMT-4)</option>
+                                                    <option value="America/St_Johns">🇨🇦 圣约翰斯 (GMT-3:30)</option>
+                                                    <option value="America/Argentina/Buenos_Aires">🇦🇷 布宜诺斯艾利斯 (GMT-3)</option>
+                                                    <option value="America/Sao_Paulo">🇧🇷 圣保罗 (GMT-3)</option>
+                                                    <option value="Atlantic/Azores">🇵🇹 亚速尔群岛 (GMT-1)</option>
+                                                    <option value="Europe/London">🇬🇧 伦敦 (GMT+0)</option>
+                                                    <option value="Europe/Berlin">🇩🇪 柏林 (CET, GMT+1)</option>
+                                                    <option value="Europe/Paris">🇫🇷 巴黎 (CET, GMT+1)</option>
+                                                    <option value="Europe/Athens">🇬🇷 雅典 (EET, GMT+2)</option>
+                                                    <option value="Europe/Istanbul">🇹🇷 伊斯坦布尔 (GMT+3)</option>
+                                                    <option value="Europe/Moscow">🇷🇺 莫斯科 (GMT+3)</option>
+                                                    <option value="Asia/Dubai">🇦🇪 迪拜 (GMT+4)</option>
+                                                    <option value="Asia/Karachi">🇵🇰 卡拉奇 (GMT+5)</option>
+                                                    <option value="Asia/Dhaka">🇧🇩 达卡 (GMT+6)</option>
+                                                    <option value="Asia/Bangkok">🇹🇭 曼谷 (GMT+7)</option>
+                                                    <option value="Asia/Shanghai">🇨🇳 北京 (GMT+8)</option>
+                                                    <option value="Asia/Tokyo">🇯🇵 东京 (GMT+9)</option>
+                                                    <option value="Australia/Sydney">🇦🇺 悉尼 (GMT+10)</option>
+                                                    <option value="Pacific/Auckland">🇳🇿 奥克兰 (GMT+12)</option>
                                                 </select>
                                             </div>
                                         </div>

+ 90 - 6
apps/ts-bak/index.js → apps/datetime-calc/index.js

@@ -961,16 +961,28 @@ var TimestampApp = {
         }
         
         try {
-            var parsed = TimeUtils.parseTimeInput(timeValue);
-            var fromDate = new Date(parsed.timestamp);
-            
+            // 1. 解析为UTC时间戳
+            var utcTimestamp = getUTCTimestampFromLocal(timeValue, fromTimezone);
+
+            // 2. 用Intl.DateTimeFormat格式化为目标时区的本地时间
+            var dt = new Date(utcTimestamp);
+            var fmt = new Intl.DateTimeFormat('zh-CN', {
+                timeZone: toTimezone,
+                year: 'numeric', month: '2-digit', day: '2-digit',
+                hour: '2-digit', minute: '2-digit', second: '2-digit',
+                hour12: false
+            });
+            var parts = fmt.formatToParts(dt);
+            var get = t => parts.find(p => p.type === t).value;
+            var targetStr = `${get('year')}-${get('month')}-${get('day')} ${get('hour')}:${get('minute')}:${get('second')}`;
+
             var html = '<div class="result-item">';
             html += '<strong>时区转换结果:</strong><br>';
             html += '原时间:' + timeValue + ' (' + fromTimezone + ')<br>';
             html += '目标时区:' + toTimezone + '<br>';
-            html += '转换结果:' + TimeUtils.formatDate(fromDate, 'YYYY-MM-DD HH:mm:ss') + '<br>';
+            html += '转换结果:' + targetStr + '<br>';
             html += '</div>';
-            
+
             DOMUtils.setHTML(resultsDiv, html);
         } catch (error) {
             DOMUtils.setHTML(resultsDiv, '<div class="text-danger">错误:' + error.message + '</div>');
@@ -1033,9 +1045,81 @@ var TimestampApp = {
 // 页面加载完成后初始化
 document.addEventListener('DOMContentLoaded', function() {
     TimestampApp.init();
+    // 打赏按钮点击事件
+    var donateBtn = document.querySelector('.x-donate-link');
+    if (donateBtn) {
+        donateBtn.addEventListener('click', function(e) {
+            e.preventDefault();
+            e.stopPropagation();
+            chrome.runtime.sendMessage({
+                type: 'fh-dynamic-any-thing',
+                thing: 'open-donate-modal',
+                params: { toolName: 'datetime-calc' }
+            });
+        });
+    }
+    // 更多工具按钮点击事件
+    var moreToolsBtn = document.querySelector('.x-other-tools');
+    if (moreToolsBtn) {
+        moreToolsBtn.addEventListener('click', function(e) {
+            e.preventDefault();
+            e.stopPropagation();
+            chrome.runtime.openOptionsPage();
+        });
+    }
 });
 
 // 全局暴露主要对象(用于调试)
 window.TimestampApp = TimestampApp;
 window.AppState = AppState;
-window.TimeUtils = TimeUtils; 
+window.TimeUtils = TimeUtils;
+
+// === 新增:更准确的原生JS IANA时区转换辅助函数 ===
+function getUTCTimestampFromLocal(timeStr, tz) {
+    // 只支持 yyyy-MM-dd HH:mm:ss
+    var m = timeStr.match(/^(\d{4})-(\d{2})-(\d{2})[ T](\d{2}):(\d{2}):(\d{2})$/);
+    if (!m) throw new Error('请输入格式为 yyyy-MM-dd HH:mm:ss 的时间');
+    var y = Number(m[1]), mon = Number(m[2]), d = Number(m[3]), h = Number(m[4]), min = Number(m[5]), s = Number(m[6]);
+    // 构造一个"源时区"下的本地时间的UTC时间戳
+    // 1. 先用Date.UTC得到UTC时间戳
+    var utcGuess = Date.UTC(y, mon - 1, d, h, min, s);
+    // 2. 用Intl.DateTimeFormat格式化utcGuess为源时区的本地时间
+    var fmt = new Intl.DateTimeFormat('en-US', {
+        timeZone: tz,
+        year: 'numeric', month: '2-digit', day: '2-digit',
+        hour: '2-digit', minute: '2-digit', second: '2-digit',
+        hour12: false
+    });
+    var parts = fmt.formatToParts(new Date(utcGuess));
+    var get = t => parts.find(p => p.type === t).value;
+    var localStr = `${get('year')}-${get('month')}-${get('day')} ${get('hour')}:${get('minute')}:${get('second')}`;
+    // 3. 计算本地时间和输入时间的差值(毫秒)
+    var input = Date.UTC(y, mon - 1, d, h, min, s);
+    var local = Date.UTC(
+        Number(get('year')),
+        Number(get('month')) - 1,
+        Number(get('day')),
+        Number(get('hour')),
+        Number(get('minute')),
+        Number(get('second'))
+    );
+    var diff = input - local;
+    // 4. 用utcGuess + diff 得到正确的UTC时间戳
+    return utcGuess + diff;
+}
+
+// 事件委托:解析结果区域点击复制
+(function() {
+    document.addEventListener('DOMContentLoaded', function() {
+        var parseResultsModule = document.querySelector('.parse-results-module');
+        if (parseResultsModule) {
+            parseResultsModule.addEventListener('click', function(e) {
+                var target = e.target;
+                if (target.classList.contains('result-value')) {
+                    var text = target.textContent;
+                    TimestampApp.copyToClipboard(text);
+                }
+            });
+        }
+    });
+})(); 

+ 1 - 1
apps/edge.json

@@ -1,7 +1,7 @@
 {
   "name": "FeHelper(前端助手)-Dev",
   "short_name": "FeHelper",
-  "version": "2025.5.2020",
+  "version": "2025.6.1020",
   "manifest_version": 3,
   "description": "JSON自动格式化、手动格式化,支持排序、解码、下载等,更多功能可在配置页按需安装!",
   "icons": {

+ 1 - 1
apps/json-format/content-script.js

@@ -540,7 +540,7 @@ window.JsonAutoFormat = (() => {
         }
 
         // 如果是 HTML 页面,也要看一下内容是不是明显就是个JSON,如果不是,则也不进行 json 格式化
-        if (document.contentType === 'text/html') {
+        if (document.contentType === 'text/html' && document.body) {
             // 使用 DOMParser 解析 HTML
             const parser = new DOMParser();
             const doc = parser.parseFromString(document.body.outerHTML, "text/html");

+ 1 - 1
apps/manifest.json

@@ -1,7 +1,7 @@
 {
   "name": "FeHelper(前端助手)-Dev",
   "short_name": "FeHelper",
-  "version": "2025.5.2020",
+  "version": "2025.6.1020",
   "manifest_version": 3,
   "description": "JSON自动格式化、手动格式化,支持排序、解码、下载等,更多功能可在配置页按需安装!",
   "icons": {

+ 11 - 0
apps/options/index.js

@@ -110,6 +110,17 @@ new Vue({
     },
 
     async created() {
+        // 1. 读取URL中的query参数并赋值给searchKey
+        try {
+            const urlParams = new URLSearchParams(window.location.search);
+            const query = urlParams.get('query');
+            if (query) {
+                this.searchKey = query;
+            }
+        } catch (e) {
+            // 忽略异常
+        }
+        // 2. 初始化数据
         await this.initData();
         this.recentCount = (await Statistics.getRecentUsedTools(10)).length;
         // 初始化后更新已安装工具数量

+ 37 - 0
apps/timestamp/index.css

@@ -72,4 +72,41 @@ thead th {
     margin: 0 auto;
     font-size: 14px;
     border-bottom: 1px solid #aaa;
+}
+
+/* 顶部升级提示样式 */
+#fh-timestamp-upgrade-tip {
+    width: 100vw;
+    position: fixed;
+    top: 0;
+    left: 0;
+    z-index: 2000000;
+    background: linear-gradient(90deg,#ff2d55 0%,#ff9800 100%);
+    color: #fff;
+    font-size: 20px;
+    font-weight: bold;
+    text-align: center;
+    padding: 18px 10px 18px 10px;
+    box-shadow: 0 4px 16px rgba(255,45,85,0.18),0 1.5px 0 #fff;
+    letter-spacing: 1px;
+}
+.fh-tip-link {
+    color: #fff;
+    text-decoration: underline;
+    font-size: 22px;
+    font-weight: 900;
+    display: inline-block;
+    margin-left: 8px;
+    animation: fh-tip-blink 1s infinite alternate;
+}
+@keyframes fh-tip-blink {
+    0% { color: #fff; text-shadow: 0 0 8px #fff, 0 0 16px #ff9800; }
+    100% { color: #ffeb3b; text-shadow: 0 0 16px #ff2d55, 0 0 32px #ff9800; }
+}
+body {
+    padding-top: 70px !important;
+}
+
+.panel-no-margin-bottom {
+    margin-bottom: 0 !important;
 }

+ 7 - 1
apps/timestamp/index.html

@@ -10,8 +10,14 @@
     </head>
     <body>
 
+    <!-- 醒目升级提示 -->
+    <div id="fh-timestamp-upgrade-tip">
+        时间戳转化工具已经升级了,功能更强大更好用,请点击安装新版:
+        <a href="/options/index.html?query=时间戳计算器" target="_blank" class="fh-tip-link">时间戳计算器</a>
+    </div>
+
     <div class="wrapper" id="pageContainer">
-        <div class="panel panel-default" style="margin-bottom: 0px;">
+        <div class="panel panel-default panel-no-margin-bottom">
             <div class="panel-heading">
                 <h3 class="panel-title">
                     <a href="https://www.baidufe.com/fehelper/index/index.html" target="_blank" class="x-a-high">