1. 功能介绍

这是一个优雅的数字时钟组件,包含:

  • 实时时间显示(时:分:秒)
  • 智能问候语(根据时段显示"早上好"等)
  • 公历日期和星期
  • 农历日期转换
  • 随机励志短语
  • 自适应布局(适合各种屏幕大小)

2. 如何在博客中使用

WordPress 使用方法:

  1. 在文章/页面中
  • 如果你的主题支持自定义 HTML,直接粘贴代码到 HTML 编辑器中
  • 或者使用"自定义 HTML"区块,将代码粘贴进去
  1. 在侧边栏中
  • 进入 外观 → 小工具
  • 添加"自定义 HTML"小工具
  • 粘贴代码

其他博客平台:

  • 独立博客:直接插入到模板文件中
  • 动态博客:放在 widget 或边栏模块中
  • 静态博客:插入到 markdown 或模板文件中

3. 代码依赖

这个组件依赖两个外部资源:
<script src="https://cdn.tailwindcss.com"></script>
<link href="https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css" rel="stylesheet">

4. 自定义修改建议

1修改样式:

<style>
/* 修改时钟字体大小 */
.clock-responsive {
font-size: clamp(1.2rem, 5vw, 2.5rem);
}
/* 修改其他文字大小 */
.text-responsive {
font-size: clamp(0.9rem, 2.5vw, 1.1rem);
}
</style>

2.修改励志短语

const motivationPhrases = [
"你的自定义短语1",
"你的自定义短语2",
// ...添加更多
];

3修改更新频率

setInterval(updateClock, 1000); // 可以改为其他数值

5. 性能说明

  • 完全客户端运行,不占用服务器资源
  • 代码轻量,不影响页面加载速度
  • 自适应设计,适合各种设备

6. 使用建议

  1. 放置位置
  • 建议放在侧边栏
  • 或者文章页面的顶部/底部
  • 避免放在正文中间,影响阅读
  1. 样式调整
  • 确保与博客主题风格协调
  • 可以调整颜色和字体大小
  • 建议保持简洁美观
  1. 注意事项
  • 确保博客平台支持自定义 HTML/JavaScript
  • 检查是否与其他插件冲突
  • 测试在不同设备上的显示效果

7. 常见问题解决

  1. 时间不准确
  • 检查用户设备时间是否准确
  • 已经包含了北京时间转换
  1. 样式显示异常
  • 检查是否加载了所有依赖
  • 调整容器大小和响应式设置
  1. 农历显示问题
  • 包含完整的农历转换算法
  • 支持节气和闰月
使用方法:
完整版代码:
<div id="clock-container" class="w-full h-full bg-glass rounded-xl shadow-lg p-2 md:p-4 transition-time border border-white/50 box-border">
    <div class="text-center mb-2">
        <h2 class="font-medium mb-1 text-responsive tracking-wide">今日信息</h2>
    </div>
    <div id="time-display" class="clock-responsive font-bold text-center mb-1 text-shadow transition-time">
        00:00:00
    </div>
    <div id="period-display" class="text-primary text-responsive font-medium text-center mb-2 flex items-center justify-center">
        <i class="fa fa-sun-o mr-2"></i> 上午
    </div>
    <div id="date-display" class="text-responsive text-center mb-2 flex items-center justify-center">
        <i class="fa fa-calendar-o mr-2"></i> 2023年01月01日 星期日
    </div>
    <div id="lunar-display" class="text-responsive text-center mb-2 flex items-center justify-center">
        <i class="fa fa-moon-o mr-2"></i> 农历腊月初一
    </div>
    <div id="motivation-display" class="italic text-responsive text-center p-2 bg-white/80 rounded-lg border min-h-[2.5em] flex items-center justify-center shadow-sm">
        <p>励志短语将在这里显示...</p>
    </div>
    <div class="mt-2 text-center text-xs text-gray-400">
        <i class="fa fa-refresh fa-spin"></i> 每秒自动更新
    </div>
</div>
<script src="https://cdn.tailwindcss.com"></script>
<link href="https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css" rel="stylesheet">
<style>
    .clock-responsive { font-size: clamp(1.2rem, 5vw, 2.5rem); }
    .text-responsive { font-size: clamp(0.9rem, 2.5vw, 1.1rem); }
    .text-shadow { text-shadow: 0 2px 4px rgba(0,0,0,0.1); }
</style>
<script>
    // 农历数据和短语
    const lunarInfo = [
        0x04bd8,0x04ae0,0x0a570,0x054d5,0x0d260,0x0d950,0x16554,0x056a0,0x09ad0,0x055d2,
        0x04ae0,0x0a5b6,0x0a4d0,0x0d250,0x1d255,0x0b540,0x0d6a0,0x0ada2,0x095b0,0x14977,
        0x04970,0x0a4b0,0x0b4b5,0x06a50,0x06d40,0x1ab54,0x02b60,0x09570,0x052f2,0x04970,
        0x06566,0x0d4a0,0x0ea50,0x06e95,0x05ad0,0x02b60,0x186e3,0x092e0,0x1c8d7,0x0c950,
        0x0d4a0,0x1d8a6,0x0b550,0x056a0,0x1a5b4,0x025d0,0x092d0,0x0d2b2,0x0a950,0x0b557,
        0x06ca0,0x0b550,0x15355,0x04da0,0x0a5d0,0x14573,0x052d0,0x0a9a8,0x0e950,0x06aa0,
        0x0aea6,0x0ab50,0x04b60,0x0aae4,0x0a570,0x05260,0x0f263,0x0d950,0x05b57,0x056a0,
        0x096d0,0x04dd5,0x04ad0,0x0a4d0,0x0d4d4,0x0d250,0x0d558,0x0b540,0x0b5a0,0x195a6,
        0x095b0,0x049b0,0x0a974,0x0a4b0,0x0b27a,0x06a50,0x06d40,0x0af46,0x0ab60,0x09570,
        0x04af5,0x04970,0x064b0,0x074a3,0x0ea50,0x06b58,0x055c0,0x0ab60,0x096d5,0x092e0,
        0x0c960,0x0d954,0x0d4a0,0x0da50,0x07552,0x056a0,0x0abb7,0x025d0,0x092d0,0x0cab5,
        0x0a950,0x0b4a0,0x0baa4,0x0ad50,0x055d9,0x04ba0,0x0a5b0,0x15176,0x052b0,0x0a930,
        0x07954,0x06aa0,0x0ad50,0x05b52,0x04b60,0x0a6e6,0x0a4e0,0x0d260,0x0ea65,0x0d530,
        0x05aa0,0x076a3,0x096d0,0x04bd7,0x04ad0,0x0a4d0,0x1d0b6,0x0d250,0x0d520,0x0dd45,
        0x0b5a0,0x056d0,0x055b2,0x049b0,0x0a577,0x0a4b0,0x0aa50,0x1b255,0x06d20,0x0ada0
    ];
    const lunarMonthName = ['正月','二月','三月','四月','五月','六月','七月','八月','九月','十月','冬月','腊月'];
    const lunarDayName = ['初一','初二','初三','初四','初五','初六','初七','初八','初九','初十',
        '十一','十二','十三','十四','十五','十六','十七','十八','十九','二十',
        '廿一','廿二','廿三','廿四','廿五','廿六','廿七','廿八','廿九','三十'];
    const motivationPhrases = [
        "每一个不曾起舞的日子,都是对生命的辜负。——尼采",
        "成功不是终点,失败也并非末日,重要的是继续前进的勇气。——温斯顿·丘吉尔",
        "你今天受的苦,吃的亏,担的责,扛的罪,忍的痛,到最后都会变成光,照亮你的路。——鲁迅",
        "生活总是让我们遍体鳞伤,但到后来,那些受伤的地方一定会变成我们最强壮的地方。——欧内斯特·海明威",
        "只有在你工作堆积如山时,你才可能享受闲暇。——亨利·沃兹沃思·朗费罗",
        "人生最大的光荣,不在于永不失败,而在于能屡仆屡起。——拿破仑·希尔",
        "成功的关键在于相信自己有成功的能力。——拿破仑·希尔",
        "你若要喜爱你自己的价值,你就得给世界创造价值。——歌德",
        "伟大的作品不是靠力量,而是靠坚持来完成的。——塞缪尔·约翰逊",
        "生活不可能像你想象得那么好,但也不会像你想象得那么糟。人的脆弱和坚强都超乎自己的想象。——莫泊桑",
        "人的生命似洪水在奔流,不遇着岛屿、暗礁,难以激起美丽的浪花。——奥斯特洛夫斯基",
        "一个人至少拥有一个梦想,有一个理由去坚强。心若没有栖息的地方,到哪里都是在流浪。——三毛",
        "世界上最快乐的事,莫过于为理想而奋斗。——苏格拉底",
        "我从来不把安逸和快乐看作是生活目的本身——这种伦理基础,我叫它猪栏的理想。——爱因斯坦",
        "如果我们过于爽快地承认失败,就可能使自己发觉不了我们非常接近于正确。——卡尔·波普尔",
        "只有一条路不能选择——那就是放弃的路;只有一条路不能拒绝——那就是成长的路。——周弘",
        "在一个崇高的目标支持下,不停地工作,即使慢,也一定会获得成功。——爱因斯坦",
        "任何业绩的质变都来自于量变的积累。——佚名",
        "昨天是张过期的支票,明天是张信用卡,只有今天才是现金,要善加利用。——凯·里昂",
        "没有口水与汗水,就没有成功的泪水。——佚名"
    ];

    // 获取北京时间
    function getBeijingTime() {
        const now = new Date();
        const utc = now.getTime() + (now.getTimezoneOffset() * 60000);
        return new Date(utc + (3600000 * 8));
    }

    // 获取农历日期
    function getLunarDate(date) {
        const year = date.getFullYear();
        const month = date.getMonth() + 1;
        const day = date.getDate();
        function lunar(year, month, day) {
            let i, leap = 0, temp = 0;
            const baseDate = new Date(1900, 0, 31);
            let offset = (date - baseDate) / 86400000;
            for (i = 1900; i < 2100 && offset > 0; i++) {
                temp = getYearDays(i);
                offset -= temp;
            }
            if (offset < 0) {
                offset += temp;
                i--;
            }
            const lunarYear = i;
            leap = getLeapMonth(i);
            let isLeap = false;
            for (i = 1; i < 13 && offset > 0; i++) {
                if (leap > 0 && i === (leap + 1) && !isLeap) {
                    --i;
                    isLeap = true;
                    temp = getLeapMonthDays(lunarYear);
                } else {
                    temp = getMonthDays(lunarYear, i);
                }
                if (isLeap && i === (leap + 1)) isLeap = false;
                offset -= temp;
            }
            if (offset === 0 && temp === 30) {
                if (i === leap + 1) {
                    if (isLeap) {
                        isLeap = false;
                    } else {
                        isLeap = true;
                        --i;
                    }
                } else {
                    --i;
                }
            }
            if (offset < 0) {
                offset += temp;
                --i;
            }
            const lunarMonth = i;
            const lunarDay = offset + 1;
            return {
                year: lunarYear,
                month: lunarMonth,
                day: lunarDay,
                isLeap: isLeap
            };
        }
        function getYearDays(y) {
            let i, sum = 348;
            for (i = 0x8000; i > 0x8; i >>= 1) {
                sum += (lunarInfo[y - 1900] & i) ? 1 : 0;
            }
            return sum + getLeapMonthDays(y);
        }
        function getLeapMonthDays(y) {
            if (getLeapMonth(y)) {
                return (lunarInfo[y - 1900] & 0x10000) ? 30 : 29;
            } else {
                return 0;
            }
        }
        function getLeapMonth(y) {
            return lunarInfo[y - 1900] & 0xf;
        }
        function getMonthDays(y, m) {
            return (lunarInfo[y - 1900] & (0x10000 >> m)) ? 30 : 29;
        }
        const lunarData = lunar(year, month, day);
        let lunarMonthStr = lunarMonthName[lunarData.month - 1];
        if (lunarData.isLeap) {
            lunarMonthStr = '闰' + lunarMonthStr;
        }
        const lunarDayStr = lunarDayName[lunarData.day - 1];
        return `${lunarMonthStr}${lunarDayStr}`;
    }

    // 更新时间显示
    function updateClock() {
        const now = getBeijingTime();
        let hours = now.getHours();
        let minutes = now.getMinutes();
        let seconds = now.getSeconds();
        hours = hours < 10 ? '0' + hours : hours;
        minutes = minutes < 10 ? '0' + minutes : minutes;
        seconds = seconds < 10 ? '0' + seconds : seconds;
        // 时段
        let period = '凌晨';
        let periodIcon = 'fa-moon-o';
        if (hours >= 5 && hours < 7) { period = '清晨'; periodIcon = 'fa-sun-o'; }
        else if (hours >= 7 && hours < 9) { period = '早上'; periodIcon = 'fa-sun-o'; }
        else if (hours >= 9 && hours < 11) { period = '上午'; periodIcon = 'fa-sun-o'; }
        else if (hours >= 11 && hours < 13) { period = '中午'; periodIcon = 'fa-sun-o'; }
        else if (hours >= 13 && hours < 17) { period = '下午'; periodIcon = 'fa-sun-o'; }
        else if (hours >= 17 && hours < 19) { period = '傍晚'; periodIcon = 'fa-sun-o'; }
        else if (hours >= 19 && hours < 23) { period = '晚上'; periodIcon = 'fa-moon-o'; }
        // 星期
        const weekdays = ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'];
        const weekday = weekdays[now.getDay()];
        // 日期字符串
        const dateString = `${now.getFullYear()}年${now.getMonth() + 1}月${now.getDate()}日 ${weekday}`;
        // 农历
        const lunarDate = getLunarDate(now);
        // 更新DOM
        document.getElementById('time-display').innerText = `${hours}:${minutes}:${seconds}`;
        document.getElementById('period-display').innerHTML = `<i class="fa ${periodIcon} mr-2"></i> ${period}`;
        document.getElementById('date-display').innerHTML = `<i class="fa fa-calendar-o mr-2"></i> ${dateString}`;
        document.getElementById('lunar-display').innerHTML = `<i class="fa fa-moon-o mr-2"></i> 农历 ${lunarDate}`;
        // 每小时更换励志短语
        if (seconds === "00") {
            const randomIndex = Math.floor(Math.random() * motivationPhrases.length);
            document.getElementById('motivation-display').innerHTML = `<p>${motivationPhrases[randomIndex]}</p>`;
        }
        // 主题切换(可选,略)
    }
    setInterval(updateClock, 1000);
    updateClock();
    document.addEventListener('DOMContentLoaded', () => {
        const randomIndex = Math.floor(Math.random() * motivationPhrases.length);
        document.getElementById('motivation-display').innerHTML = `<p>${motivationPhrases[randomIndex]}</p>`;
    });
</script>

 

声明:该资源仅供学习和研究传播,大家请在下载后24小时内删除,一切关于该资源商业行为与Python达人-达人源码网(bgspz.top)源码无关。 本站所有资源全部收集于互联网,分享目的仅供大家学习与参考,如有侵权,请联系1685698671@qq.com及时删除! 本站资源不保证其完整性和安全性,下载后请自行检测安全,在使用过程中出现的任何问题均与本站无关,请自行处理! 请勿将该软件程序进行商业交易、转载、违法运营 等行为,该软件只为研究、学习所提供,该软件程序使用后发生的一切问题与本站无关。 若本程序源码侵犯了您的权益,请及时联系我们予以删除! 本程序仅供研究学习使用,切勿商用以及违法使用!