C#我需要显示进程正在运行的时间,显示秒数增加,通常:00:00:01、00:00:02、00:00:03.....等。
我正在使用此代码:
var stopwatch = new System.Diagnostics.Stopwatch();
stopwatch.Start();
//here is doing my process
stopwatch.Stop();
Run Code Online (Sandbox Code Playgroud)
当进程停止时,我显示时间 ELAPSED,如下:
TimeSpan ts = stopwatch.Elapsed;
Run Code Online (Sandbox Code Playgroud)
...和这个:
{0} minute(s)"+ " {1} second(s)", ts.Minutes, ts.Seconds, ts.Milliseconds/10.
Run Code Online (Sandbox Code Playgroud)
这显示经过的总时间,但我需要显示在控制台中运行的时间。
我怎样才能做到这一点?
我想解析 JSON 字符串并使用该token.Type属性来检测 type 的值JTokenType.TimeSpan。
我不知道如何在我的输入字符串中表达 TimeSpan,一切似乎都被解释为 JTokenType.String。
var timeSpanString = TimeSpan.FromHours(1).ToString();
testString = string.Format(@"{{""Value"": ""{0}"" }}", timeSpanString);
var statObject = JObject.Parse(testString);
JToken token = statObject["Value"];
var tokenValue = token.ToString();
var tokenType = token.Type; // JTokenType.String
Run Code Online (Sandbox Code Playgroud)
我什至试过:
JValue jValue = new JValue("test");
jValue.Value = TimeSpan.FromHours(1);
bool isTimeSpan = jValue.Type == JTokenType.TimeSpan; // true!
testString = string.Format(@"{{""Value"": ""{0}"" }}", jValue.Value);
var statObject = JObject.Parse(testString);
JToken token = statObject["Value"];
var tokenValue = token.ToString();
var tokenType = token.Type; // …Run Code Online (Sandbox Code Playgroud) 以下代码给了我上面标题所示的错误:
TimeSpan my_hours = new TimeSpan();
my_hours = TimeSpan.Parse("00:00");
my_hours += TimeSpan.Parse("25:07"); //this line throws error
Run Code Online (Sandbox Code Playgroud)
就在最后一行运行之前,my_hours 的值为 4.01:33:00。我该如何解决这个错误?
基本上,这段代码在 for 循环中运行,并且值“25:07”不断变化,并添加到 my_hours 中,并一直这样做,直到当 my_hours 的当前值为 4.01:33 时,它尝试添加此值“25:07” :00 并抛出错误。
假设我有 3 个时间范围:
07:00 - 18:00
18:00 - 23:00
23:00 - 07:00
Run Code Online (Sandbox Code Playgroud)
和代码:
public class TimeShift
{
public TimeSpan Start { get; set; }
public TimeSpan End { get; set; }
}
List<TimeShift> shifts = new List<TimeShift>();
Run Code Online (Sandbox Code Playgroud)
如何检查列表中的每个项目是否在上述 3 个范围之间以及多少小时?
例如其中之一TimeShift:
public class TimeShift
{
public TimeSpan Start { get; set; }
public TimeSpan End { get; set; }
}
List<TimeShift> shifts = new List<TimeShift>();
Run Code Online (Sandbox Code Playgroud)
那么这意味着 16.5 小时。
对于上面的例子:
Start: 07:00
End: 23:30
Run Code Online (Sandbox Code Playgroud) 对于以下行:
decimal sec = (decimal)TimeSpan.FromMilliseconds(.8).TotalSeconds;
Run Code Online (Sandbox Code Playgroud)
我期望 sec = 0.0008 ,但它被四舍五入到 3 个小数位并给出结果 0.001 ,任何解决方法。
我在下面创建了2个时间跨度:
TimeSpan currentTs = TimeSpan.FromSeconds(43995); //12:13:15
TimeSpan towTime = TimeSpan.FromSeconds(303072); //12:11:12
Run Code Online (Sandbox Code Playgroud)
我试图找到以分钟为单位的差异(经过我传递的秒数,看来它们是在不同的日子)。我希望相差2分钟左右,但实际上,我得到-57分钟。
int timeDifference = (int)currentTs.Subtract(towTime).Minutes;
Run Code Online (Sandbox Code Playgroud)
有人可以解释我在做什么错吗?
我创造了TimeSpan这种方式
TimeSpan ts = new Timespan();
// Do some addition and subtraction on it
Run Code Online (Sandbox Code Playgroud)
然后我使用它将它保存到文件中
string.Format("{0}:{1}:{2}:{3}", ts.Hours, ts.Minutes, ts.Seconds, ts.MilliSeconds);
Run Code Online (Sandbox Code Playgroud)
从它返回的各种值都是这样的
0:0:4:410
0:0:1:425
0:0:1:802
0:0:1:509
0:0:1:674
0:0:1:628
0:0:2:76
Run Code Online (Sandbox Code Playgroud)
如何将其转换回TimeSpan.
我在用
TimeSpan.ParseExact("0:0:4:410", "h:m:s:fff", null);
Run Code Online (Sandbox Code Playgroud)
但它给了我错误 Input String is not in correct format.
我哪里错了?
我有两次喜欢
Time A:09:00 AM
Run Code Online (Sandbox Code Playgroud)
并且Time B:06:00 PM
我想时间A与时间B中的总时间和用时1小时EG的时间跨度表现出来:
09:00 AM
10:00 AM
11:00 AM
12:00 PM
upto
06:00 PM
Run Code Online (Sandbox Code Playgroud) 我有一个时间跨度值,它是两个日期时间值的差异.它是这样的:
myvalue = {41870.01:44:22.8365404}
Run Code Online (Sandbox Code Playgroud)
我还有一个代表另一个时间跨度值的字符串,它是这样的:
ttime= "23:55" // which means 23 minutes and 55 seconds
Run Code Online (Sandbox Code Playgroud)
我想检查myvalue是否小于ttime.这是我的尝试:
if(myvalue < Timespan.Parse(ttime))
//do this
else
//do that
Run Code Online (Sandbox Code Playgroud)
我的方法是否足够正确?我还需要做点什么吗?谢谢.
我需要添加2个从文本框中取出的时间范围:mm:ss.fff
例如:
00:59,800+ 00:02,300- 结果应该是01:02.100,但我有01:02,060.
我想我的转换问题如下:
string Sum1 = "00:" + "00:59,800";
Sum1 = Sum1.Replace(',', '.');
double FSum1 = TimeSpan.Parse(Sum1).TotalSeconds;
string Sum2 = "00:" + "00:02,300";
Sum2 = Sum2.Replace(',', '.');
double FSum2 = TimeSpan.Parse(Sum2).TotalSeconds;
double SumResult = FSum1 + FSum2;
maskedTextBoxSumResult.Text = TimeSpan.FromMinutes(SumResult).ToString(@"hh\:mm\:ss\.fff");
Run Code Online (Sandbox Code Playgroud)
另外,我需要对减法做同样的事情.
谢谢你的帮助.