生日卡重排:方框放"还剩几天"、右侧放农历日期 + 阳历日期 (#88)
用户 2026-11-05:「还有5天,也就是10月2号,这个不好。因为"还有5天"这个事情 比较重要,所以方形框里面应该写几天,比如还有5天就写5天;现在还有5天, 那个位置应该写上10月2日。如果是农历的话,就要写上农历十月二日。 下面还要写上阳历:换算完之后,今年阳历是多少?比如11月10日, 都放在右侧"满42周岁"这个位置。」 上一版信息分工正好是**反的**:方框里放了「日」(几号),右侧放了「还有 N 天」。 用户要的相反。 重排后: 方框(84x84 浅主题色块) = **还剩几天**(大数字)+ 下方「天」/「今天」 右侧第一行 = 日期(农历生日「农历十月初二」;其余「11月16日」) 右侧第二行 = 阳历换算(**只有农历生日才画**) 右侧第三行 = 满 N 周岁 服务端 Anniversary::occurrences() 补两个**成品文字**字段: lunar_label = 「十月初二」「闰四月初五」(农历生日才有) solar_md = 「11月10日」(今年实际发生那天的公历月日) ⚠️ 农历文字为什么不在端上拼:Lunar 有完整的月名/日名对照表 (正月/冬月/腊月、初一/廿三…),端上再抄一份必然漂移, 而且闰月(闰四月)这种特例得一起处理。 ⚠️ solar_md 用 $date(今年换算后的实际日期)而不是 $a['month']/$a['day']: 农历生日的 month/day 是**农历**月日,直接拼出来会是错的公历。 ⚠️ 公历生日时 dateSolar() 返回空串 ⇒ 不画第二行: 那时第一行已经是「11月16日」,再画一次一模一样,纯噪音。 ⚠️ days = 0(就是今天)时方框写「今」而不是「0」: 0 看着像没数据,而且底下那行写「今天」,配成「今 / 今天」很奇怪。 实测服务端输出: 高雪玉 的农历生日 days=5 lunar=十月初二 solar=11月10日 date=2026-11-10 领证纪念日 days=7 lunar=(空) solar=11月12日 date=2026-11-12 杨永全 的农历生日 days=8 lunar=十月初五 solar=11月13日 date=2026-11-13 杨永全 的生日 days=11 lunar=(空) solar=11月16日 date=2026-11-16 刘巧莲 的农历生日 days=29 lunar=十月廿六 solar=12月4日 date=2026-12-04 编译通过,已装真机。
This commit is contained in:
@@ -672,6 +672,27 @@ final class Anniversary
|
||||
用户要看的是"生日那天"(农历初五就该显示 5)。 */
|
||||
'day' => (int)($a['day'] ?? 0),
|
||||
'month' => (int)($a['month'] ?? 0),
|
||||
/* 🔴 #88(用户 2026-11-05):卡片右侧要显示两种日期写法 ——
|
||||
「如果是农历的话,就要写上农历十月二日。下面还要写上阳历:
|
||||
换算完之后,今年阳历是多少?比如11月10日」
|
||||
|
||||
⇒ 服务端直接给**成品文字**,端上不自己拼:
|
||||
· `lunar_label` = 「十月二日」/「闰四月初五」(农历生日才有;其余空)
|
||||
· `solar_md` = 「11月10日」(今年实际发生那天的公历月日)
|
||||
|
||||
⚠️ 农历文字为什么不在端上拼:`Lunar` 有完整的月名/日名对照表
|
||||
(正月/冬月/腊月、初一/廿三…),端上再抄一份必然漂移,
|
||||
而且闰月(闰四月)这种特例得一起处理。
|
||||
⚠️ `solar_md` 用 `$date`(今年换算后的实际日期)而不是 `$a['month']/$a['day']`:
|
||||
农历生日的 month/day 是**农历**月日,直接拼出来会是错的公历。
|
||||
⚠️ 农历生日时 `lunar_label` 用 `$a['month']/$a['day']`(才是农历月日);
|
||||
公历生日时留空 —— 那时"农历"这一行没有意义。 */
|
||||
'lunar_label' => ($repeat === 'lunar' && $m >= 1 && $d >= 1)
|
||||
? (\App\Lunar::monthName($m, !empty($a['is_leap'])) . \App\Lunar::dayName($d))
|
||||
: '',
|
||||
'solar_md' => (strlen((string)$date) >= 10)
|
||||
? ((int)substr((string)$date, 5, 2)) . '月' . ((int)substr((string)$date, 8, 2)) . '日'
|
||||
: '',
|
||||
'source' => (string)($a['source'] ?? 'custom'),
|
||||
'note' => (string)($a['note'] ?? ''),
|
||||
'id' => (int)($a['id'] ?? 0),
|
||||
|
||||
Reference in New Issue
Block a user