时间跨度不能转换.到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;
知道吗?
谢谢
如果你只需要从几秒钟构建一个 TimeSpan,你可以使用它:
TimeSpan cTime = TimeSpan.FromSeconds(Convert.ToDouble(elapsedSeconds));