- 根因:register_time/last_login_time/invited_at 两种单位混存——Java 本地注册写毫秒(System.currentTimeMillis)、PHP同步拉回写秒(time()), 而所有显示端都按毫秒解释 → 秒值~1.78e9显示为1970-01-21 - DurationParser 新增 toMs() 归一化辅助(<10^12视为秒,×1000,幂等) - whois/Main /account/GUI多账号/邀请GUI绑定时间/临时密码邮件:读取端统一归一化 - InviteManager.reconcileInviteData:秒级存量invited_at原地×1000迁移, 回填兜底链register_time/last_login_time先归一化;月度计数与明细比较前归一化 - ChatFilterManager.isNewPlayerUnder1Hour:旧代码无条件×1000,对毫秒行 算出巨大负elapsed恒判新玩家 → 改用toMs - AreaProtection/WebManager 领地转让5分钟防秒退检查:同样归一化 - 不动同步层(applyPulledRow保持原值),避免与PHP对账拉锯