时间跨度不能转换.到Int16(经过秒))和不能转换.到Int64(经过秒))错误Unity C#

本文关键字:经过 转换 不能 Unity 错误 Int16 时间跨度 Int64 | 更新日期: 2023-09-27 17:57:19

我在尝试将变量流逝秒数转换为 ToInt16 和 ToInt64 时出错。

TimeSpan cTime = new TimeSpan (0, 0, 0, Convert.ToInt16(elapsedSeconds));

收到错误:

OverflowException: Value is greater than Int16.MaxValue or less than Int16.MinValue
System.Convert.ToInt16 (Int64 value) (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System/Convert.cs:1093)
margaretSellTimer.OnResumeSession () (at Assets/script/margaretShop/margaretSellTimer.cs:148)
margaretSellTimer.Awake () (at Assets/script/margaretShop/margaretSellTimer.cs:28)

我也尝试将行更改为如下所示:

TimeSpan cTime = new TimeSpan (0, 0, 0, Convert.ToInt64(elapsedSeconds));

这也得到了一个错误:

Assets/script/margaretShop/margaretSellTimer.cs(148,89): error CS1502: The best overloaded method match for `System.TimeSpan.TimeSpan(int, int, int, int)' has some invalid arguments
Assets/script/margaretShop/margaretSellTimer.cs(148,89): error CS1503: Argument `#4' cannot convert `long' expression to type `int'

我看到的是经过秒是很大的价值,所以我尝试使用 ToInt64(长),但不能像那样转换。

实际上我想要从cTime中得到的是:

Seconds = cTime.Seconds;
            Minutes = cTime.Minutes;
            Hours = cTime.Hours;
            days = cTime.Days;

知道吗?

谢谢

时间跨度不能转换.到Int16(经过秒))和不能转换.到Int64(经过秒))错误Unity C#

如果你只需要从几秒钟构建一个 TimeSpan,你可以使用它:

TimeSpan cTime = TimeSpan.FromSeconds(Convert.ToDouble(elapsedSeconds));