<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>
评论(0)