我是否正确地假设这个逻辑(在评论中解释)是不正确的?
// While the current time is before the finish time, sleep the current thread.
// The timer will continue to run the getting of the rates
while (TimeSpan.Compare(DateTime.Now.TimeOfDay,this._finishTime.TimeOfDay) == -1)
Run Code Online (Sandbox Code Playgroud)
在我看到TimeSpan.Compare的MSDN文档之后,在我找到正确的参数为1或0以实现此功能时,我觉得这个代码已存在多年.
我有一个带有中断的C#程序,它可以处理我希望每隔40毫秒运行一次的列表部分,但是中断内部的数学运算可以冻结具有特定大小和属性的列表的程序.
我很想尝试通过删除TimeSpan来加速它并从数学中减去并在执行算术之前将它们全部转换为TotalMilliseconds而不是之后.有没有人知道添加和减去TimeSpans的开销是什么,与创建TotalMilliseconds并添加和减去它相比?
谢谢.
我有一个例程,假设每天上午9点运行....
protected override void OnStart(string[] args)
{
log.Info("Info - Service Start");
string timeToRunStr = "09:00";
var timeStrArray = timeToRunStr.Split(';');
foreach (var strTime in timeStrArray)
{
timeToRun.Add(TimeSpan.Parse(strTime));
}
ResetTimer();
}
void ResetTimer()
{
log.Info("Info - Reset Timer");
try
{
TimeSpan currentTime = DateTime.Now.TimeOfDay;
TimeSpan nextRunTime = timeToRun[0];
foreach (TimeSpan runTime in timeToRun)
{
if (currentTime < runTime)
{
nextRunTime = runTime;
// log.Info("Info - in loop");
_timer = new Timer((nextRunTime - currentTime).TotalSeconds * 1000);
break;
}
else {
TimeSpan test = …Run Code Online (Sandbox Code Playgroud) 我有以下格式的几个字符串:
"1:15"
":45"
"1:30:45"
我需要将它们转换为TimeSpan,但是当我使用TimeSpan.Parse中的一些(例如第一个)时,它返回1小时15分钟,我希望它为1分15秒.
任何建议将不胜感激!
我需要将其转换为时间跨度:
当我这样做时:
DateTime s = booking.TourStartDate.Add(TimeSpan.Parse(booking.TourStartTime.Replace(".", ":")));
Run Code Online (Sandbox Code Playgroud)
它会在几天之内加上说'10'(上午10点),而不是时间,虽然它是一种愚蠢的格式.
SQLCe不支持TimeSpan,所以我需要以其他方式保存它.是否可以在某处定义默认转换,如DbContext,或者我是否需要在存储库中手动处理?我不喜欢因此而改变我的实体类.
顺便说一下,我只保存了24小时的TimeSpan.
如果有一些巧妙的技巧,例子会很棒.
我正在尝试使用以下代码确定是否已过去一年:
bool HasYearPassed
{
get
{
var inception = InceptionDate.Value; // DateTime Value from UI
var expiration = ExpirationDate.Value; // DateTime Value from UI
TimeSpan difference = expiration - inception;
return difference.Days > 365;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,在某些情况下,我得到的答案不正确.具体来说,如果启动日期是2014年1月1日,到期日期是2015年1月1日,则difference.Days返回365,但测试失败,尽管确实已经过了一年.有什么改进逻辑的建议吗?
谢谢!
我正在将一些东西从SQL Server转换为PostgreSQL.在BeginTime和EndTime之间有一个计算字段的表,称为MidTime.时间是从视频剪辑的开头偏移,并且永远不会超过大约6分钟.在SQL Server中,BeginTime,EndTime和MidTime都是TimeSpans.你可以使用它作为功能:
DATEADD(ms, DATEDIFF(ms,BeginTime, EndTime)/2, BeginTime)
Run Code Online (Sandbox Code Playgroud)
这取两个时间跨度的差异,以毫秒为单位,除以2,然后将其添加到BeginTime.超级直截了当.结果如下所示:
ID BeginTime EndTime MidTime
10137 00:00:05.0000000 00:00:07.0000000 00:00:06.0000000
10138 00:00:08.5000000 00:00:09.6660000 00:00:09.0830000
10139 00:00:12.1660000 00:00:13.4000000 00:00:12.7830000
10140 00:00:14.6000000 00:00:15.7660000 00:00:15.1830000
10141 00:00:17.1330000 00:00:18.3000000 00:00:17.7160000
10142 00:00:19.3330000 00:00:21.5000000 00:00:20.4160000
10143 00:00:23.4000000 00:00:25.4000000 00:00:24.4000000
10144 00:00:25.4330000 00:00:26.8330000 00:00:26.1330000
Run Code Online (Sandbox Code Playgroud)
我看过PostgreSQL中可用的所有不同的东西,看不到这样的东西.我将BeginTime和EndTime存储为"没有时区的时间"时间(6)值,并且它们在数据库中看起来正确.我可以相互减去这些,但我不能得到以毫秒为单位的值减半(不允许分割次数),然后没有明显的方法将毫秒添加回BeginTime.
我看过EXTRACT,当你要求毫秒时,你会得到第二和毫秒的值,但只是那部分时间.我似乎无法表示我可以减去,除法,然后将结果添加回另一个时间的时间.
我正在使用Postgres 9.4而且我没有看到任何简单的方法这样做而不会将日期分成组件并获得整体毫秒(看起来它会起作用但我不想做这么难看的事情,如果我不做不需要),或者将所有内容转换为unix日期时间然后进行计算,然后如何将其恢复到"没有时区的时间"并不明显.
我希望有一些我只是缺少的优雅东西?或者更好的方法来存储这些工作更容易?我只对时间部分感兴趣所以时间(6)似乎最接近Sql Server的TimeSpan.
我已经搜索过这个问题,但遗憾的是找不到合适的答案.
我想计算在不同的10天做某事的平均时间,我有10个datetimepicker开始时间,10个datetimepicker用于每天的结束时间(总共20个datetimepicker).
现在我想得到这10天工作所花费的平均时间.
这就是我timespan每天计算所做的,现在我不知道如何计算平均值timespans
当然我想知道有没有更短的方法来完成工作?
DateTime Dt1 = dateTimePicker1.Value;
DateTime Dt2 = dateTimePicker2.Value;
.
.
.
DateTime Dt20 = dateTimePicker20.Value;
TimeSpan Day1 = DateTime.Parse(Dt11.TimeOfDay.ToString()).Subtract(DateTime.Parse(Dt1.TimeOfDay.ToString()));
TimeSpan Day2 = DateTime.Parse(Dt12.TimeOfDay.ToString()).Subtract(DateTime.Parse(Dt2.TimeOfDay.ToString()));
.
.
.
TimeSpan Day10 = DateTime.Parse(Dt20.TimeOfDay.ToString()).Subtract(DateTime.Parse(Dt10.TimeOfDay.ToString()));
Run Code Online (Sandbox Code Playgroud)
我想找到第1天到第10天的平均值
在C#中如何datetime在.NET中获得以下值.我试图看看今天的日期并试图滚动13个月.因此,上个月减去 13个月,即2017年12月,但需要在00:00:00000获得该月的第一天.还试图得到一个enddate如下所述,这是上个月底.
试图得到这个并将其分配给我的代码中的变量.
开始日期:
2017-12-01 00:00:00.000
Run Code Online (Sandbox Code Playgroud)
结束日期:
2019-01-31 23:59:59.000
Run Code Online (Sandbox Code Playgroud)
什么是最好的方法来获得这个?
timespan ×10
c# ×8
.net ×3
datetime ×3
parsing ×2
performance ×1
postgresql ×1
sql-server ×1
string ×1
time ×1
timer ×1