Skip to content

Commit fa5cdee

Browse files
committed
Add two-line moon datetime and lunar hour display
1 parent 3ed5488 commit fa5cdee

3 files changed

Lines changed: 57 additions & 2 deletions

File tree

assets/css/main.css

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,8 +151,31 @@ a {
151151
}
152152

153153
.moon-wrap {
154-
display: grid;
155-
place-items: center;
154+
display: flex;
155+
flex-direction: column;
156+
align-items: center;
157+
min-height: 286px;
158+
padding-bottom: 1.6rem;
159+
position: relative;
160+
z-index: 1;
161+
}
162+
163+
.moon-datetime {
164+
margin-top: auto;
165+
min-height: 3.4rem;
166+
display: flex;
167+
flex-direction: column;
168+
justify-content: flex-end;
169+
gap: 0.2rem;
170+
font-size: 0.82rem;
171+
line-height: 1.35;
172+
color: rgba(255, 255, 255, 0.9);
173+
letter-spacing: 0.04em;
174+
text-align: center;
175+
}
176+
177+
.moon-datetime-line {
178+
margin: 0;
156179
}
157180

158181
.moon {

assets/js/moon-phase.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,32 @@
3030
moon.setAttribute('aria-label', label);
3131
const text = document.querySelector('.moon-label');
3232
if (text) text.textContent = label;
33+
34+
const gregorianText = document.querySelector('[data-gregorian-datetime]');
35+
const lunarText = document.querySelector('[data-lunar-datetime]');
36+
if (!gregorianText || !lunarText) return;
37+
38+
const nowDate = new Date();
39+
const gregorianFormatter = new Intl.DateTimeFormat('en-US', {
40+
weekday: 'short',
41+
year: 'numeric',
42+
month: 'short',
43+
day: '2-digit',
44+
hour: '2-digit',
45+
minute: '2-digit',
46+
second: '2-digit',
47+
hour12: false
48+
});
49+
50+
const lunarFormatter = new Intl.DateTimeFormat('zh-CN-u-ca-chinese', {
51+
month: 'long',
52+
day: 'numeric'
53+
});
54+
55+
const earthlyBranches = ['子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥'];
56+
const hourIndex = Math.floor((nowDate.getHours() + 1) / 2) % 12;
57+
const branchHour = `${earthlyBranches[hourIndex]}时`;
58+
59+
gregorianText.textContent = gregorianFormatter.format(nowDate);
60+
lunarText.textContent = `${lunarFormatter.format(nowDate)} ${branchHour}`;
3361
})();

layouts/index.html

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@
33
<div class="sky-panel pixel-border">
44
<div class="moon-wrap">
55
<div class="moon" data-moon-phase></div>
6+
<div class="moon-datetime" aria-live="polite">
7+
<p class="moon-datetime-line" data-gregorian-datetime></p>
8+
<p class="moon-datetime-line" data-lunar-datetime></p>
9+
</div>
610
</div>
711
<div class="intro">
812
<h1>{{ default .Site.Title .Site.Params.home.title }}</h1>

0 commit comments

Comments
 (0)