我有这个问题:
blTimer.Text = (TimeSpan.FromMinutes(60) - (DateTime.Now - startTime))
.ToString("hh\:mm\:ss");
此时:
ToString("hh\:mm\:ss");
Visual Studio显示了标题中的错误。我该如何解决?
以后,您应该始终将the FULL, EXACT ERROR MESSAGE复制/粘贴到您的问题正文中!
在这种情况下,请考虑更改格式字符串,例如.ToString("hh:mm:ss")
.
反斜杠("")通常表示一个"转义序列": https://learn.microsoft.com/en-us/cpp/c-language/escape-sequences?view=msvc-160
参见如何在字符串中写入反斜杠()?
附录:
有一些事情可能会出错,包括:a)格式字符串中错误的反斜杠,b)将格式字符串应用于错误的数据类型,c)其他?
因为它听起来像你已经修复了反斜杠,我猜也许当前的问题是你在错误的数据类型上调用.ToString()
(不是一个System.DateTime
对象的类型)。
建议:
- 当有疑问时,一个强大的故障排除技术是拆分您的"复杂表达式"。 另一个强大的技巧是写一个"简短的、自包含的、正确的(可编译的)示例"。- SSCCE
下面是一个例子:
using System;
/*
* SAMPLE OUTPUT:
* endTime: 12:00:00
*/
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
DateTime startTime = DateTime.Parse("10/18/21 11:00:00");
DateTime endTime = startTime + TimeSpan.FromMinutes(60);
string s = endTime.ToString("hh:mm:ss");
Console.WriteLine("endTime: {0}", s);
}
}
}
我希望这能帮助你找到正确的方向…
RESOLVED:D
问题是框架版本,当我创建项目时,我没有看到。net的版本,所以这就是问题所在!谢谢大家的帮助!
@paulsm4 -是的。谢谢,这些代码对我在其他一些项目上很有用,谢谢!
如果startTime
为DateTime
类型,则没有问题。TimeSpan
有一个重载ToString(string format)
,你的格式工作。
这是代码:
timer.Tick += (obj, args) =>
lblTimer.Text =
(TimeSpan.FromMinutes(60) - (DateTime.Now - startTime)).ToString("hh/mm/ss"); //here is the problem on .ToString
timer.Enabled = true;
tmr_hide.Start();
tmr_show.Start();
tmr_if.Start();
tmr_himmi.Start();
tmr_clock.Start();