124 lines
12 KiB
HTML
124 lines
12 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover">
|
||
<meta name="format-detection" content="telephone=no">
|
||
<title>满月、百天、周岁是哪天</title>
|
||
<!-- 孕期计算器 · 满月、百天、周岁是哪天(2026-11-06 用户从 20 个备选里选了 5 个,本页是其中之一)。
|
||
按生日(没出生就按预产期)排出满月、双满月、百天、半岁、周岁:公历、星期、农历、还有几天;可选「不是周末就给附近的周末」。
|
||
怎么数天两种习惯都给:出生当天算第 1 天(满月 = 生日 + 29 天、百天 = 生日 + 99 天),或第二天算第 1 天(各 +1)。半岁、周岁按日历月。
|
||
农历用下面 LN 表(2024-02-10 ~ 2031-12 每个农历月初一,[距 1970-01-01 的天数, 农历年, 月, 闰],由 python lunardate 生成);超出范围就不显示农历。
|
||
共用 ../_shared/calc.css + calc.js(返回 / 禁回弹 / 日期按北京时间 / 记住上次填的值);自成一页,不引 app.js。 -->
|
||
<link rel="stylesheet" href="../_shared/calc.css?v=26110464">
|
||
<link rel="stylesheet" href="../_shared/wizard.css?v=26110464">
|
||
<style>:root{--c:#E8774E;--c2:#FFAA85;--cbg:#FFF1EA}#res .row b{font-size:17px;white-space:nowrap}.res .row b small{display:block;font-size:11.5px;font-weight:600;opacity:.9}.tl .m span.lu{color:var(--c);font-weight:700}</style>
|
||
</head>
|
||
<body>
|
||
<div id="scroll">
|
||
<header class="bar" id="bar">
|
||
<button class="back" id="back" aria-label="返回"><svg viewBox="0 0 24 24"><path d="M15 5l-7 7 7 7"/></svg></button>
|
||
<span class="t">孕期计算器</span>
|
||
</header>
|
||
<section class="hd"><p>孕期计算器</p><h1>满月、百天、周岁是哪天</h1><span>公历、农历、星期几一起排好,提前订酒席、约拍照</span></section>
|
||
<section class="calc">
|
||
<div class="res" id="res"><div class="empty">填好日期,马上排出来</div></div>
|
||
<div class="fld"><span class="lb">宝宝出生了吗</span><div class="seg s2" id="cBorn"><button type="button" data-v="1">已经出生</button><button type="button" data-v="0">还没出生</button></div></div>
|
||
<div class="fld"><label class="lb" for="cD" id="lbD">宝宝生日</label><input class="in num" type="date" id="cD">
|
||
<span class="hint" id="hD">还没出生就填预产期;预产期前后 2 周出生都正常,生了以后回来改成生日就行</span></div>
|
||
<div class="fld"><span class="lb">从哪天开始数</span><div class="seg s2" id="cCnt"><button type="button" data-v="1">出生当天算第 1 天</button><button type="button" data-v="2">出生第二天算第 1 天</button></div>
|
||
<span class="hint">各地习惯不一样,多数地方按出生当天算;拿不准就问问家里老人</span></div>
|
||
<div class="fld"><span class="lb">打算怎么过</span><div class="seg s2" id="cPlan"><button type="button" data-v="jiu">办酒席</button><button type="button" data-v="pai">拍照留念</button><button type="button" data-v="all">酒席、拍照都要</button><button type="button" data-v="jian">家里简单过</button></div></div>
|
||
<div class="fld"><span class="lb">正日子不是周末,要不要找附近的周末</span><div class="seg s2" id="cWk"><button type="button" data-v="1">要,方便亲戚来</button><button type="button" data-v="0">不用,就按正日子</button></div></div>
|
||
</section>
|
||
|
||
<section class="sec">
|
||
<h2>宝宝的大日子</h2>
|
||
<p class="lead" id="lead">按你填的日期排</p>
|
||
<ul class="tl" id="tl"></ul>
|
||
</section>
|
||
|
||
<section class="sec">
|
||
<h2>提前要做的事</h2>
|
||
<div class="cards" id="todo"></div>
|
||
</section>
|
||
|
||
<p class="foot">日期按北京时间计算;各地风俗不同,以家里习惯为准。</p>
|
||
</div>
|
||
<script src="../_shared/calc.js?v=26110464"></script>
|
||
<script>
|
||
(function () {
|
||
'use strict';
|
||
var C = window.CK, $ = C.$, DAY = C.DAY;
|
||
C.shell();
|
||
var LN = [[19763,2024,1],[19792,2024,2],[19822,2024,3],[19851,2024,4],[19880,2024,5],[19910,2024,6],[19939,2024,7],[19969,2024,8],[19999,2024,9],[20028,2024,10],[20058,2024,11],[20088,2024,12],[20117,2025,1],[20147,2025,2],[20176,2025,3],[20206,2025,4],[20235,2025,5],[20264,2025,6],[20294,2025,6,1],[20323,2025,7],[20353,2025,8],[20382,2025,9],[20412,2025,10],[20442,2025,11],[20472,2025,12],[20501,2026,1],[20531,2026,2],[20560,2026,3],[20590,2026,4],[20619,2026,5],[20648,2026,6],[20678,2026,7],[20707,2026,8],[20736,2026,9],[20766,2026,10],[20796,2026,11],[20826,2026,12],[20855,2027,1],[20885,2027,2],[20915,2027,3],[20944,2027,4],[20974,2027,5],[21003,2027,6],[21032,2027,7],[21062,2027,8],[21091,2027,9],[21120,2027,10],[21150,2027,11],[21180,2027,12],[21209,2028,1],[21239,2028,2],[21269,2028,3],[21299,2028,4],[21328,2028,5],[21358,2028,5,1],[21387,2028,6],[21416,2028,7],[21446,2028,8],[21475,2028,9],[21504,2028,10],[21534,2028,11],[21564,2028,12],[21593,2029,1],[21623,2029,2],[21653,2029,3],[21682,2029,4],[21712,2029,5],[21741,2029,6],[21771,2029,7],[21800,2029,8],[21830,2029,9],[21859,2029,10],[21888,2029,11],[21918,2029,12],[21948,2030,1],[21977,2030,2],[22007,2030,3],[22036,2030,4],[22066,2030,5],[22096,2030,6],[22125,2030,7],[22155,2030,8],[22184,2030,9],[22214,2030,10],[22243,2030,11],[22273,2030,12],[22302,2031,1],[22331,2031,2],[22361,2031,3],[22391,2031,3,1],[22420,2031,4],[22450,2031,5],[22479,2031,6],[22509,2031,7],[22539,2031,8],[22568,2031,9],[22598,2031,10],[22627,2031,11]];
|
||
var MN = ['', '正', '二', '三', '四', '五', '六', '七', '八', '九', '十', '冬', '腊'];
|
||
var DN = ['初一', '初二', '初三', '初四', '初五', '初六', '初七', '初八', '初九', '初十', '十一', '十二', '十三', '十四', '十五', '十六', '十七', '十八', '十九', '二十', '廿一', '廿二', '廿三', '廿四', '廿五', '廿六', '廿七', '廿八', '廿九', '三十'];
|
||
function lunar(t) {
|
||
var d = Math.round(t / DAY), k = -1;
|
||
for (var i = 0; i < LN.length; i++) { if (LN[i][0] <= d) k = i; else break; }
|
||
if (k < 0 || k === LN.length - 1) return '';
|
||
var m = LN[k];
|
||
return '农历' + (m[3] ? '闰' : '') + MN[m[2]] + '月' + DN[d - m[0]];
|
||
}
|
||
var st = C.store('mmbox.calc.rizi', { born: '', d: '', cnt: 1, plan: '', wk: '' });
|
||
if (!st.d && st.born !== 1) { var sd = C.savedDue(); if (!isNaN(sd)) st.d = C.fmt(sd); }
|
||
var inp = $('#cD'); inp.value = st.d;
|
||
inp.addEventListener('input', function () { st.d = inp.value; paint(); });
|
||
C.seg($('#cBorn'), st, 'born', paint); C.seg($('#cCnt'), st, 'cnt', paint); C.seg($('#cPlan'), st, 'plan', paint); C.seg($('#cWk'), st, 'wk', paint);
|
||
/* 离 t 最近的周六或周日(同样近取前面那个) */
|
||
function wkend(t) {
|
||
var w = new Date(t).getUTCDay(); if (w === 0 || w === 6) return t;
|
||
var back = w, fwd = 6 - w; /* 往前到上个周日要 w 天,往后到周六要 6-w 天 */
|
||
return fwd <= back ? t + fwd * DAY : t - back * DAY;
|
||
}
|
||
function left(t) { var n = Math.round((t - C.today()) / DAY); return n > 0 ? '还有 ' + n + ' 天' : n === 0 ? '就是今天' : '已过 ' + (-n) + ' 天'; }
|
||
function md(t) { var d = new Date(t); return (d.getUTCMonth() + 1) + ' 月 ' + d.getUTCDate() + ' 日'; }
|
||
function paint() {
|
||
st.save();
|
||
$('#lbD').textContent = st.born === 0 ? '预产期' : '宝宝生日';
|
||
var b = C.parse(st.d), R = $('#res');
|
||
if (isNaN(b)) { R.innerHTML = '<div class="empty">填好日期,马上排出来</div>'; $('#tl').innerHTML = ''; $('#todo').innerHTML = ''; return; }
|
||
var off = st.cnt === 2 ? 1 : 0;
|
||
var L = [
|
||
['满月', b + (29 + off) * DAY, '出生第 30 天', '办满月酒、给亲友报喜;宝宝 42 天还要去医院体检'],
|
||
['双满月', b + (59 + off) * DAY, '出生第 60 天', '宝宝开始会对着人笑,适合拍第一组表情照'],
|
||
['百天', b + (99 + off) * DAY, '出生第 100 天', '百天照、百日宴;宝宝能抬头了,拍照最好拍'],
|
||
['半岁', C.addMonths(b, 6), '满 6 个月', '开始添加辅食的时候,也可以拍半岁纪念照'],
|
||
['周岁', C.addMonths(b, 12), '满 1 周岁', '抓周、周岁宴、全家福']
|
||
];
|
||
var wk = st.wk === 1;
|
||
$('#lead').textContent = (st.born === 0 ? '按预产期 ' : '按生日 ') + C.cn(b, 1) + ' 排' + (st.born === 0 ? ',生了以后回来改成生日会更准' : '');
|
||
$('#tl').innerHTML = L.map(function (x) {
|
||
var t = x[1], we = wkend(t), now = Math.round((t - C.today()) / DAY), lu = lunar(t);
|
||
return '<li class="' + (now < 0 ? 'done' : '') + '"><span class="d"></span><div class="m"><b>' + x[0] + '<em>' + x[2] + '</em></b>' +
|
||
'<span><i>' + C.cn(t, 1) + ' ' + C.wd(t) + '</i> · ' + left(t) + '</span>' + (lu ? '<span class="lu">' + lu + '</span>' : '') +
|
||
(wk && we !== t ? '<span>附近的周末:<i>' + md(we) + ' ' + C.wd(we) + '</i></span>' : '') + '<span>' + x[3] + '</span></div></li>';
|
||
}).join('');
|
||
var nx = L.filter(function (x) { return x[1] >= C.today(); })[0] || L[4];
|
||
R.innerHTML = '<small>' + (nx[1] >= C.today() ? '下一个大日子:' : '') + nx[0] + (C.cn(nx[1], 1).slice(0, 4) !== C.cn(C.today(), 1).slice(0, 4) ? '(' + C.cn(nx[1], 1).slice(0, 4) + ' 年)' : '') + '是</small><span class="big num">' + md(nx[1]) + '<u>' + C.wd(nx[1]) + '</u></span>' +
|
||
'<div class="row">' + [L[0], L[2], L[4]].map(function (x) { return '<div><small>' + x[0] + '</small><b class="num">' + md(x[1]).replace(/ /g, '') + '<small>' + C.wd(x[1]) + (lunar(x[1]) ? '<br>' + lunar(x[1]).replace('农历', '') : '') + '</small></b></div>'; }).join('') + '</div>' +
|
||
'<span class="note">' + nx[0] + left(nx[1]) + (wk && wkend(nx[1]) !== nx[1] ? ';想办在周末可以定 ' + md(wkend(nx[1])) + C.wd(wkend(nx[1])) : '') + '。</span>';
|
||
var td = [];
|
||
var plan = st.plan;
|
||
if (plan === 'jiu' || plan === 'all') td.push(['订酒店', '满月酒提前 1 个月左右订,周末的好日子更抢手;百日宴、周岁宴提前 1~2 个月。满月时妈妈刚出月子,酒席别太累,也可以和百天合办。']);
|
||
if (plan === 'pai' || plan === 'all') td.push(['约拍照', '百天照、周岁照提前 2~4 周约摄影;百天宝宝能抬头、会笑,最好拍。约上午宝宝睡醒吃饱的时段,带两套换洗衣服。']);
|
||
if (plan === 'jian') td.push(['家里过也有仪式感', '拍张和满月、百天数字牌的合照,写几句话给宝宝;周岁可以在家抓周。']);
|
||
td.push(['42 天体检', '满月后别忘了出生第 42 天左右,妈妈和宝宝一起去医院做产后复查。']);
|
||
if (st.born === 0) td.push(['先别订死', '预产期只是估算,提前或推后两周都常见;酒店可以先问档期,生了以后再按真实生日定。']);
|
||
$('#todo').innerHTML = td.map(function (x) { return '<div class="cd"><div class="k"><b>' + x[0] + '</b></div><p>' + x[1] + '</p></div>'; }).join('');
|
||
}
|
||
paint();
|
||
})();
|
||
</script>
|
||
<script src="../_shared/brand.js?v=26110203"></script>
|
||
<script src="../../js/share-card.js?v=26110464"></script>
|
||
<script>window.mbShare('../../assets/share/t/rizi-js.jpg', '满月、百天、周岁是哪天:公历农历星期几一起排好'); /* 11-06 微信转发图 */</script>
|
||
<!-- 分步模式:一步一题、最后出结果(同生娃计算器),见 ../_shared/wizard.js -->
|
||
<script src="../_shared/wizard.js?v=26110464"></script>
|
||
<script>CKW.init({ root: '.calc', res: '#res', after: '#scroll > section.calc ~ *' });</script>
|
||
<script src="../../js/last-sub.js?v=26110905"></script> <!-- 11-07 小程序刷新回到这一页(见 js/last-sub.js) -->
|
||
<script src="../../js/pv.js?v=26110653"></script> <!-- 11-07 页面访问记录(推送效果看板,见 js/pv.js) -->
|
||
</body>
|
||
</html>
|