/* 孕期计算器共用小工具(11-04 新增 10 个计算器用):返回 / 顶栏 / 禁回弹 / 北京时间日期 / 记住上次填的值。 页面: 之后用 window.CK。 */ (function (g) { 'use strict'; /* 11-09 小程序「复制链接」直达:加载 js/host-nav.js(容器页返回走 navigateBack、页内链接开容器页) */ try { if (!window.MBHost && document.currentScript) { var hs = document.createElement('script'); hs.src = new URL('../../js/host-nav.js?v=26110907', document.currentScript.src).href; document.head.appendChild(hs); } } catch (e) {} var $ = function (s) { return document.querySelector(s); }; var DAY = 864e5; function today() { var n = new Date(Date.now() + 288e5); return Date.UTC(n.getUTCFullYear(), n.getUTCMonth(), n.getUTCDate()); } function parse(v) { var m = /^(\d{4})-(\d{2})-(\d{2})$/.exec(v || ''); return m ? Date.UTC(+m[1], m[2] - 1, +m[3]) : NaN; } function fmt(t) { var d = new Date(t); return d.getUTCFullYear() + '-' + ('0' + (d.getUTCMonth() + 1)).slice(-2) + '-' + ('0' + d.getUTCDate()).slice(-2); } function cn(t, y) { var d = new Date(t); return (y ? d.getUTCFullYear() + ' 年 ' : '') + (d.getUTCMonth() + 1) + ' 月 ' + d.getUTCDate() + ' 日'; } function wd(t) { return '周' + '日一二三四五六'.charAt(new Date(t).getUTCDay()); } function addMonths(t, n) { var d = new Date(t), y = d.getUTCFullYear(), m = d.getUTCMonth() + n, day = d.getUTCDate(), last = new Date(Date.UTC(y, m + 1, 0)).getUTCDate(); return Date.UTC(y, m, Math.min(day, last)); } function money(n) { n = Math.round(n); return n >= 1e4 ? (Math.round(n / 100) / 100).toFixed(n >= 1e5 ? 1 : 2).replace(/\.?0+$/, '') + ' 万' : n.toLocaleString('zh-CN'); } function esc(s) { return String(s == null ? '' : s).replace(/[&<>"]/g, function (c) { return { '&': '&', '<': '<', '>': '>', '"': '"' }[c]; }); } /* 本机记的孕期(首页同款键):{w 孕周, pp 产后};没有返回 null */ function preg() { try { var x = JSON.parse(localStorage.getItem('mmbox.gcwk.v1') || 'null'); return x && x.w ? x : null; } catch (e) { return null; } } /* 预产期计算器填过的值 → 预产期时间戳(多个计算器共用,用户不用重复填) */ function savedDue() { try { var s = JSON.parse(localStorage.getItem('mmbox.edd.calc') || 'null'); if (!s) return NaN; if (s.m === 'ivf') { var t = parse(s.tr); return isNaN(t) ? NaN : t + (+s.emb === 3 ? 263 : 261) * DAY; } var l = parse(s.lmp); return isNaN(l) ? NaN : l + (280 + (+s.cy || 28) - 28) * DAY; } catch (e) { return NaN; } } function store(key, def) { var st = {}; Object.keys(def).forEach(function (k) { st[k] = def[k]; }); try { var sv = JSON.parse(localStorage.getItem(key) || 'null'); if (sv) Object.keys(def).forEach(function (k) { if (sv[k] != null) st[k] = sv[k]; }); } catch (e) {} st.save = function () { var o = {}; Object.keys(def).forEach(function (k) { o[k] = st[k]; }); try { localStorage.setItem(key, JSON.stringify(o)); } catch (e) {} }; return st; } /* 分段按钮: