{"record":{"id":"7fd826c3e0794846","repo":"babalae/better-genshin-impact","slug":"hour-0-24","errorCode":null,"errorMessage":"无效的小时值: {hour}，必须是 0-24 之间的整数字符","messagePattern":"无效的小时值: (.+?)，必须是 0-24 之间的整数字符","errorType":"validation","errorClass":"ArgumentException","httpStatus":null,"severity":"warning","filePath":"BetterGenshinImpact/Core/Script/Dependence/Genshin.cs","lineNumber":498,"sourceCode":"    /// 进出千星奇域\n    /// </summary>\n    /// <returns></returns>\n    public async Task WonderlandCycle()\n    {\n        await new EnterAndExitWonderlandJob().Start(CancellationContext.Instance.Cts.Token);\n    }\n\n    /// <summary>\n    /// 调整时间\n    /// </summary>\n    /// <param name=\"hour\">目标小时(0-24)</param>\n    /// <param name=\"minute\">目标分钟(0-59)</param>\n    /// <param name=\"skip\">是否跳过动画（默认为否）</param>\n    /// <returns></returns>\n    public async Task SetTime(int hour, int minute, bool skip = false)\n    {\n        if ( hour < 0 || hour > 24)\n            throw new ArgumentException($\"无效的小时值: {hour}，必须是 0-24 之间的整数字符\", nameof(hour));\n        if (minute < 0 || minute > 59)\n            throw new ArgumentException($\"无效的分钟值: {minute}，必须是 0-59 之间的整数字符\", nameof(minute));\n        await new SetTimeTask().Start(hour, minute, CancellationContext.Instance.Cts.Token, skip);\n    }\n    \n    /// <summary>\n    /// 调整时间\n    /// </summary>\n    /// <param name=\"hour\">目标小时(0-24的字符类型)</param>\n    /// <param name=\"minute\">目标分钟(0-59的字符类型)</param>\n    /// <param name=\"skip\">是否跳过动画（默认为否）</param>\n    /// <returns></returns>\n    public async Task SetTime(string hour, string minute, bool skip = false)\n    {\n        if (!int.TryParse(hour, out var h) || h < 0 || h > 24)\n            throw new ArgumentException($\"无效的小时值: {hour}，必须是 0-24 之间的整数字符\", nameof(hour));\n        if (!int.TryParse(minute, out var m) || m < 0 || m > 59)\n            throw new ArgumentException($\"无效的分钟值: {minute}，必须是 0-59 之间的整数字符\", nameof(minute));","sourceCodeStart":480,"sourceCodeEnd":516,"githubUrl":"https://github.com/babalae/better-genshin-impact/blob/a7cb36712dcb409be610257d877fcea3597e9d6b/BetterGenshinImpact/Core/Script/Dependence/Genshin.cs#L480-L516","documentation":"Thrown by the int overload of SetTime when hour is outside the inclusive range [0, 24]. The game's time-adjustment UI supports hours 0 through 24 (24 meaning next-day midnight). Values outside this range are meaningless for the in-game clock.","triggerScenarios":"Calling genshin.SetTime(hour, minute) with hour < 0 or hour > 24. Common with off-by-one bugs (e.g., 25), negative values from arithmetic, or incorrect dynamic calculation from DateTime.","commonSituations":"Script computes hour from a formula or external data source and passes an unclamped value. Misunderstanding the range as 0-23 (24-hour clock) instead of 0-24 inclusive.","solutions":["Clamp hour to [0, 24] before calling SetTime.","Use modulo: hour = ((hour % 24) + 24) % 24 if you want wrap-around.","Validate the value in your script logic and log a warning if it falls outside range.","Switch to the string overload only if you need string parsing; it performs the same range check."],"exampleFix":"// before\ngenshin.SetTime(computedHour, computedMinute);\n\n// after\nvar safeHour = Math.Clamp(computedHour, 0, 24);\nvar safeMinute = Math.Clamp(computedMinute, 0, 59);\ngenshin.SetTime(safeHour, safeMinute);","handlingStrategy":"validation","validationCode":"// Validate hour range before calling SetTime\nif (hour < 0 || hour > 24)\n    throw new ArgumentOutOfRangeException(nameof(hour), hour, \"Hour must be 0-24\");\ngenshin.SetTime(hour, minute);","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always clamp hour to [0, 24] before calling SetTime.","When computing hour dynamically, use Math.Clamp(hour, 0, 24).","Remember 24 is valid (means next-day midnight) but 25 is not."],"tags":["validation","range-check","set-time","argument"],"backgroundTag":null,"analyzedSha":"a7cb36712dcb409be610257d877fcea3597e9d6b","analyzedAt":"2026-08-13T16:44:57.548Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}