【问题标题】:Timespan.TotalDays - can't convert double to stringTimespan.TotalDays - 无法将双精度转换为字符串
【发布时间】:2018-05-30 16:46:05
【问题描述】:

我在 Google 和此处寻找解决方案,但找不到任何相关信息。我试图找出日期之间的差异。我写了类似的东西

TimeSpan difference = timealarm.Subtract(DateTime.Now);

其中 timealarm 是 DateTime.Now + 3 hours。这条线似乎很好。我正在尝试使用

MessageBox.Show(difference.TotalMinutes);

然后我收到标题中提到的错误:

无法将类型 'double' 转换为 'string. Visual Studio 显示错误 这里 - 差异。总分钟数。

我是 .net 和 c# 的新手,我想这很简单。

【问题讨论】:

标签: c# .net datetime timespan subtraction


【解决方案1】:

MessageBox.Show 接受一个字符串。 difference.TotalMinutes 的类型是 double。没有从doublestring 的隐式转换,但您可以调用ToString 方法:

MessageBox.Show(difference.TotalMinutes.ToString());

这只会使用您运行的默认区域性来转换值。 (因此,它是否使用逗号或句点作为小数分隔符将取决于您的系统,例如。)

一般来说,当你遇到这样的错误时,你应该检查:

  • 您的“来源”类型(在这种情况下为double)是您期望的吗?如果没有,也许你应该改变你正在计算的内容。
  • 您的“目标”类型(在本例中为string)是您所期望的吗?如果没有,也许你应该改变你正在调用的内容,或者你使用该值的方式。

如果这两种类型都有意义,那么您需要考虑如何将“源”类型转换为“目标”类型 - 这取决于上下文。

【讨论】:

  • 它可以工作,但为什么它在没有“toString()”的情况下工作 - youtu.be/iYsdAyKBN6w ?
  • @RobertSzczepański:如果你的意思是Console.WriteLine 调用,那么Console.WriteLine 接受double 的超载。 (但我还没有看过整个视频——如果你有一个具体的例子,请准确解释是哪一个。最好是用文字说明,但该视频中只需要一段时间会有所帮助——否则我会猜测是什么让你感到困惑.)
  • 我确定我粘贴了带有精确时间的链接。不管怎样,你回答了我,这是我的问题,谢谢。
【解决方案2】:

MessageBox 需要一个字符串,而您的值是双精度 您只需要像这样将双精度转换为字符串

MessageBox.Show(difference.TotalMinutes.ToString());

【讨论】:

  • 我认为您正在考虑使用 Java,因为使用了 Double.toString
猜你喜欢
  • 2015-04-24
  • 1970-01-01
  • 2020-10-20
  • 2020-12-14
  • 2020-07-17
  • 2011-08-11
  • 1970-01-01
相关资源
最近更新 更多