{"record":{"id":"3a41519654b90b9d","repo":"babalae/better-genshin-impact","slug":"minute-0-59","errorCode":null,"errorMessage":"无效的分钟值: {minute}，必须是 0-59 之间的整数字符","messagePattern":"无效的分钟值: (.+?)，必须是 0-59 之间的整数字符","errorType":"validation","errorClass":"ArgumentException","httpStatus":null,"severity":"warning","filePath":"BetterGenshinImpact/Core/Script/Dependence/Genshin.cs","lineNumber":500,"sourceCode":"    /// <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));\n        await new SetTimeTask().Start(h, m, CancellationContext.Instance.Cts.Token, skip);\n    }","sourceCodeStart":482,"sourceCodeEnd":518,"githubUrl":"https://github.com/babalae/better-genshin-impact/blob/a7cb36712dcb409be610257d877fcea3597e9d6b/BetterGenshinImpact/Core/Script/Dependence/Genshin.cs#L482-L518","documentation":"Thrown by the int overload of SetTime when minute is outside the inclusive range [0, 59]. The game clock only supports valid minute values within a standard 60-minute hour.","triggerScenarios":"Calling genshin.SetTime(hour, minute) with minute < 0 or minute > 59. Typically caused by unclamped arithmetic (e.g., minute = 65 after time addition without carry-over).","commonSituations":"Script adds minutes to a base time (baseMinute + offset) without handling carry into hours. Floating-point minute values cast to int produce unexpected ranges.","solutions":["Clamp minute to [0, 59] before calling SetTime.","If adding an offset, compute carry: hour += minute / 60; minute = minute % 60.","Validate the value with an explicit range check and handle the error case gracefully."],"exampleFix":"// before\ngenshin.SetTime(baseHour, baseMinute + offset);\n\n// after\nvar totalMinutes = baseMinute + offset;\nvar finalHour = baseHour + totalMinutes / 60;\nvar finalMinute = totalMinutes % 60;\ngenshin.SetTime(Math.Clamp(finalHour, 0, 24), finalMinute);","handlingStrategy":"validation","validationCode":"// Validate minute range before calling SetTime\nif (minute < 0 || minute > 59)\n    throw new ArgumentOutOfRangeException(nameof(minute), minute, \"Minute must be 0-59\");\ngenshin.SetTime(hour, minute);","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always clamp minute to [0, 59] before calling SetTime.","When adding time offsets, carry overflow into the hour component.","Use modulo for wrap-around: minute = (minute % 60 + 60) % 60."],"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"}