传奇启动报is not a valid date and time的修复步骤

来源: 作者: 点击:
传奇服务端或M2启动时弹出 is not a valid date and time,意思是程序想把一段字符串转成日期时间,但格式不对或者值是空的。老HERO、GOM、GEE都常见,不是服务端崩坏。先分清是「M2一起步就报」还是「选角色/进游戏才报」,两处查的东西不一样。

一、系统短日期格式先改(起步必做)

Win10/Win11默认短日期常是 2026/10/15 或带「年/月/日」,老引擎不认,直接报无效日期。

操作:
右键任务栏时间 → 调整日期和时间 → 语言和区域 → 更改日期格式
短日期改成 yyyy-M-d 或 yyyy-MM-dd
长时间改成 HH:mm:ss(24小时制)
区域格式选「中文(中国)」
时区设 (UTC+08:00) 北京
改完重启电脑,别只关窗口

控制面板路线也一样:
控制面板 → 区域 → 其他设置 → 日期
短日期填 yyyy-MM-dd,应用确定,重启。

改完先起一次M2,多数单纯系统格式问题到这就没报了。

二、M2起步就报:查 !Setup.txt 时间参数

系统改完还报,基本是 Mir200\!Setup.txt 里写了脏时间。

用记事本打开 !Setup.txt,搜这几个词:
Date
Time
DayOfGuildFountain
Start
End

常见脏数据:
DayOfGuildFountain=2026/10/15
DayOfGuildFountain=0000-00-00
某活动 StartTime=2026-13-01 14:00
行尾带空格、全角符号、中文句号

修法:
等号后面是时间又不是标准横杠格式 → 删掉值留空
DayOfGuildFountain=
整行不用就前面加英文分号注释掉
;DayOfGuildFountain=2026-10-15
要保留就写全:2026-10-15 14:30:00,日期和时间中间一个空格

存盘后关干净所有网关窗口再起M2,别只关M2不关网关,老进程还占着。

三、选角色/读档时才报:数据库时间字段脏了

能起M2,一点角色或某行会功能就弹错,是人物表/行会表时间字段有非法值。

DBC2000(HERO老端):
打开 BDE Administrator 或 DBC 工具,进 HeroDB
看人物表、行会表
字段如 RegDate、CreateDate、LastLogin、DisbandDate

SQLite(GOM/GEE新端):
用 SQLiteStudio 打开 DBServer 下的 db 文件
查 UserData / Guild / ServerInfo 类表
字段 CreateTime、LastLoginTime、RegTime

非法值长这样:
0000-00-00
2026-13-01
2026-02-30(2月没有30)
空串
????-??-??
带斜杠 2026/10/15

修法:
单条改:填 2026-01-01 00:00:00
整表脏数据多就从备份恢复角色表
SQLite 可跑:
UPDATE UserData SET LastLoginTime='2026-01-01 00:00:00' WHERE LastLoginTime LIKE '%0000%';
跑前先备份 db 文件

行会表有脏时间也会卡行会泉水、行会战开启,别只查人物表。

四、活动/NPC脚本里拼了非法时间

M2运行中弹这错,不是启动阶段,基本是脚本调时间函数。

重点查 Mir200\Envir:
QuestDiary 各活动脚本
Robot.txt / RobotManage.txt
Market_Def 里NPC时间命令

常见错法:
RunOnDay 0:00 没秒数,应 0:00:00
SetDate(20231301) 月份错
CheckTime(32:00:00) 小时超24
脚本里拼变量:<%变量%>:00 变量空了变成 :00:00
活动结束时间写 2026-00-15、2026-13-01
用斜杠当分隔符

修法:
时间统一 yyyy-MM-dd HH:mm:ss
RunOnDay 完整写 时:分:秒
脚本里取系统时间用引擎自带格式,别自己拼字符串
最近改过哪个脚本就先注释那个段测

五、插件注入时间校验也顺带排

用了 AutoEvent、月卡、商城、远程NPC类插件,偶尔会在加载时读时间字段,字段脏了就跟着崩。

排查顺序:
Mir200\Plugins 里把非官方 dll 移出去
PlugList.txt 只留 IPLocal.dll 这类核心
起M2不报了再一个个加回
哪个加回就报,就是它读的那张表有问题

别一上来删插件,先确认是插件还是数据本身。

六、系统时间本身歪了

主板电池没电、虚拟机时间漂移、时区设成国外,都会让引擎读到离谱时间。

查:
任务栏时间是不是当前真实时间
时区是不是北京UTC+8
虚拟机关掉自动同步宿主机时间
命令行 w32tm /resync 强制同步一次

云主机 Linux 端:
timedatectl set-timezone Asia/Shanghai
date 看一眼

系统时间显示 2099 或 1980,先改对再起M2。

七、M2日志定位具体哪一行

别光看弹窗,看 M2Server 日志或底部输出,通常会带字段名或文件名。

日志里若有:
DayOfGuildFountain → 去 !Setup.txt
Load HumChar → 人物表时间字段
Guild → 行会表
QuestDiary\某路径 → 脚本行
Plugin → 插件表

按日志指的方向改,比全局瞎改快。

八、最快处理顺序

1 系统短日期改 yyyy-MM-dd,时区北京,重启
2 起M2,能起走第4步
3 还报就开 !Setup.txt,清掉时间参数值
4 选角色才报 → 查人物表时间字段
5 行会功能报 → 查行会表
6 运行中报 → 查 QuestDiary/Robot 脚本时间
7 移走 Plugins 非核心dll 测一次
8 数据库脏数据多直接从备份恢复
9 系统时间同步一次,管理员跑M2

九、几个容易白忙活的坑

只改了短日期没重启,注册表缓存还是老的
只关M2不关网关,老进程还占着配置
!Setup.txt 行尾有空格,看着对其实解析失败
数据库用斜杠存时间,系统改横杠也没用,得改数据
RunOnDay 写 0:00 少秒数,老引擎不认
虚拟机时间和宿主机差几小时,校验直接挂
插件表脏了,删插件能起但功能废了,根子还在数据
DBC区域设成英文格式,老HERO直接不认中文库时间

这报错本质就一句话:某处时间字符串不合法。系统格式改对能解六成,剩下四成在 !Setup.txt、人物/行会表、活动脚本三处。先系统、再配置、再数据库、最后脚本,不用重下服务端,也不用重装系统。