标签: timespan

在Delphi 2010中混淆了TTimeSpan的使用

我在Delphi 2010中尝试了新的Record类型TTimeSpan.但我鼓励一个非常奇怪的问题.

assert(TTimeSpan.FromMilliseconds(5000).Milliseconds = 5000);
Run Code Online (Sandbox Code Playgroud)

这个断言没有通过.'TTimeSpan.FromMilliseconds(5000).Milliseconds'的值预计为5000,但它为0.

我深入挖掘:

function TTimeSpan.GetMilliseconds: Integer;
begin
  Result := Integer((FTicks div TicksPerMillisecond) mod 1000);
end;

FTicks = 50000000
TicksPerMillisecond = 10000
FTick div TicksPerMillisecond = 50000000 div 10000 = 5000
(FTick div TicksPerMillisecond) mod 1000 = 5000 mod 1000 = 0 // I do not understand, why mod 1000
Integer((FTick div TicksPerMillisecond) mod 1000) = Integer(0) = 0 
Run Code Online (Sandbox Code Playgroud)

我的代码解释是正确的,不是吗?

更新:方法GetTotalMilliseconds(双精度)正确实现.

delphi timespan record delphi-2010

6
推荐指数
1
解决办法
1939
查看次数

每秒获取Ticks并转换为String值?

如何获取DateTime.UtcNow每秒的滴答数并将其转换为String值?

不好的问题:再试一次百万分之一秒

c# asp.net datetime timespan

6
推荐指数
1
解决办法
2万
查看次数

Silverlight媒体播放器位置问题

我面临一个奇怪的问题.我的应用程序播放来自特定位置的电影,因此即使是以毫秒为单位提到的位置对我也很重要.我正在为媒体元素分配一个位置,但它显示错误的帧.我不知道为什么媒体播放器不会从我给出的位置上玩.

以下是一些示例代码:

 TimeSpan oTimeSpan = TimeSpan.FromMilliseconds(16800200); // This shows 04:40:00.2000000

 MediaPlayer.Position = oTimeSpan;      // But after assigning, value is 04:40:00.1990000
Run Code Online (Sandbox Code Playgroud)

这是分配前后的屏幕截图: 替代文字

替代文字

谁能告诉我这里我做错了什么?

c# asp.net silverlight wpf timespan

6
推荐指数
1
解决办法
857
查看次数

C#TimeSpan.FromTicks()不准确?

我一直在使用C#做一个小游戏,而在另一台PC上测试游戏时,我遇到了一些奇怪的时间问题.

我已经在这个游戏中设置了所有内容,根据自上一个游戏循环后的时间进行更新,在大多数情况下应该是这样,但在第二台PC上,一切都很顺利.

我发现问题与使用该FromTicks()方法创建TimeSpan有关.我使用以下代码进行了一些测试:

class Program
{
    static void Main(string[] args)
    {
        System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
        sw.Start();
        System.Threading.Thread.Sleep(TimeSpan.FromSeconds(1));
        sw.Stop();
        TimeSpan t = TimeSpan.FromTicks(sw.ElapsedTicks);
        Console.WriteLine(t.ToString());
        Console.WriteLine(sw.Elapsed.ToString());
        Console.ReadKey();
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的主PC上,我运行了这个程序,得到了以下内容:

    00:00:00.3528353
    00:00:00.9856987

我完全没想到的东西.我认为第二个结果是非常不准确的,但第一个结果很好.

然后我在另一台PC上运行相同的程序,得到了这个:

    00:03:20.6866734
    00:00:00.998287

我很震惊.

我的问题不是我如何解决这个问题,我已经决定使用第二种方法,因为它足够准确......相反,我要求启蒙.

怎么会这样呢?为什么第一个结果如此不准确?为什么这在不同的机器上变化很大?

我检查msdn以防我使用该方法错误,但那里的例子表明我的结果应该是不可能的......

注意:
我认为CMOS电池正在死亡/死亡,这是一个因素吗?

c# performance timespan stopwatch

6
推荐指数
2
解决办法
2543
查看次数

这是用TimeSpan代表几十年的最佳方式吗?

我正在制作一张图表 "1930-1940", "1940-1950", "1950-1960", "1960-1970", ...

我想用a DateTime和a 代表这个Timespan,但我不确定如何制作TimeSpan,我发现很难验证我的时间跨度是否正确.

这是我应该如何使用TimeSpan,还是重叠?如果它重叠,那么我该如何解决呢?

List<DateTime> list1 = new List<DateTime>();
List<TimeSpan> list2 = new List<TimeSpan>();

int startYearInt = 1930;

int times = 0;
const int intervalSize = 10;
for (int i = startYearInt; i < 2020; i += intervalSize)
{
    DateTime sYear = new DateTime(startYearInt + (intervalSize * times++), 1, 1);
    TimeSpan period = (sYear.AddYears(intervalSize)) - sYear;

    list1.Add(sYear);
    list2.Add(period); // <<-- Don't know if if this is correct? …
Run Code Online (Sandbox Code Playgroud)

c# datetime timespan visual-studio-2010 visual-studio

6
推荐指数
1
解决办法
1162
查看次数

我在这个算法中缺少什么来在两个TimeSpans之间找到可能跨越不同日期的TimeOfDay?

我有List<T>24小时内的可用时间,以及两个TimeSpans,minTime和maxTime.

我需要找到内一天的时间List<T>,该之间土地minTimemaxTime,但是由于这个正在多个时区中使用时,minTime和MAXTIME可以在不同的日子和跨越像下午1点至凌晨1点,第二天

我最接近的就是这个,但我觉得我在这里缺少一些主要的组件,或者做一些非常低效的事情,因为我对这个TimeSpan对象很新.我只是无法弄清楚是什么......

// Make new TimeSpan out of maxTime to eliminate any extra days (TotalHours >= 24),
// then check if time on the MaxTime is earlier than the MinTime
if (new TimeSpan(maxTime.Hours, maxTime.Minutes, maxTime.Seconds) < minTime)
{
    // If time on MaxTime is earlier than MinTime, the two times span separate days,
    // so find first time after minTime OR before maxTime
    nextAvailableTime = Times.FirstOrDefault(p => …
Run Code Online (Sandbox Code Playgroud)

.net c# timespan .net-4.0

6
推荐指数
1
解决办法
615
查看次数

范围之间的随机日期时间 - 不统一输出

我实现了下面的RandomDate,但我总是让值关闭到"从"日期,我可能会错过这里的东西....

public static DateTime GetRandomDate(DateTime from, DateTime to)
    {
        var range = new TimeSpan(to.Ticks - from.Ticks);

        var rnd = new Random();

        var randTimeSpan = new TimeSpan((long)(range.TotalSeconds - rnd.Next(0, (int)range.TotalSeconds))); 

        return from + randTimeSpan;
    }
Run Code Online (Sandbox Code Playgroud)

c# random datetime timespan

6
推荐指数
1
解决办法
2万
查看次数

TimeSpan到自定义字符串,如HH:mm:ss

我想转换

var delta = TimeSpan.FromSeconds(10);
Run Code Online (Sandbox Code Playgroud)

像字符串一样 00:00:01

我试试这个 delta.ToString(@"0:\\hh\\:mm\\:ss", System.Globalization.CultureInfo.InvariantCulture);

但没有什么工作正常.另外我在这里找不到https://msdn.microsoft.com/en-us/library/ee372287.aspx这样做的正确方法.

方法ToString()没有帮助所以我需要格式谎言hh:mm:ss.

在此输入图像描述 任何线索?

.net c# timespan time-format

6
推荐指数
2
解决办法
1万
查看次数

如何使用@Model(TimeSpan)在剃刀中使用三元运算符?

我试图在这段代码中使用三元运算符,其Model.FirstTechSupportAssigneeElapseTime类型为TimeSpan?:

<dt>Assigned In</dt>
<dd> 
@if (@Model.FirstTechSupportAssigneeElapseTime == null)
     { @:N/A } 
else 
     { @Model.FirstTechSupportAssigneeElapseTime } 
</dd>
Run Code Online (Sandbox Code Playgroud)

我试图实现三元运算符,但我失败了,@的处处让我感到困惑.在这种情况下,是否可以拥有三元运算符?

谢谢.

c# asp.net timespan ternary-operator razor

5
推荐指数
1
解决办法
9109
查看次数

Smalltalk中有没有检查两个时间跨度交集的功能?

Smalltalk 中是否有一个内置函数可以将两个时间跨度作为输入,并检查它们是否相交?

例如:两个时间跨度 2018/01/01-2018/01/05 和 2018/01/03-2018/01/10 确实相交,并且此函数应输出 true。

更新:我实现了以下方法:

checkIntersection: aTimespan
"returns true if two timespans overlap and false if not"
| start1 end1 start2 end2 |
start1 := self start.
end1 := self end.
start2 := aTimespan start.
end2 := aTimespan end.
(start1 = start2)
    ifTrue: [ ^true ].
(start1 = end2)
    ifTrue: [ ^true ].
(end1 = start2)
    ifTrue: [ ^true ].
(end1 = end2)
    ifTrue: [ ^true ].
(start2 < start1 and: [ (start1 < end2) ]) …
Run Code Online (Sandbox Code Playgroud)

timespan smalltalk

5
推荐指数
1
解决办法
105
查看次数