【问题标题】:How to get elapsed time from a TimeSpan variable to the current time如何获取从 TimeSpan 变量到当前时间的经过时间
【发布时间】:2021-11-06 20:04:20
【问题描述】:

我正在尝试保留我的计时器,我在列表视图中有一个项目列表,因此当用户启动任何项目时,我想保留任何项目的计时器。我有一个时间跨度变量,它接受一个整数变量总时间,转换为分钟

   //Get total time and convert to minutes
   _TimeSpan = TimeSpan.FromMinutes(TimeSheet.TotalTime);

如何从 _TimeSpan 变量中获取经过的时间,就像使用 DateTime.Now 一样,下面的示例使用 DateTime.Now 来获取经过的时间:

            var startAt = DateTime.Now;
            Application.Current.Properties["StartedAt"] = startAt;


            Device.StartTimer(TimeSpan.FromSeconds(1), () =>
            {
                if (cts.IsCancellationRequested)
                {
                    return false;
                }
                else
                {
                    Device.BeginInvokeOnMainThread(() =>
                    {

                        TimeSpan _TimeSpan = DateTime.Now - startAt;


                        TxtTimer = _TimeSpan.ToString(@"hh\:mm\:ss");


                    });

                    return true;
                }

            });

【问题讨论】:

  • 我把你推荐给documentation
  • 您实际上想要做什么?如果你想测量时间,秒表是个好方法。 Timespan 已经表示经过的时间,所以你的问题对我来说没有多大意义。
  • @JonasH 我正在尝试坚持我的计时器
  • 您不能持久化计时器。你可以持久化一个 timestamp 用于计时相关的事情。还有many ways to get such timestamps

标签: c# xamarin.forms mvvm


【解决方案1】:

您可以使用TimeSpan.Subtract,然后传递您的解析值和当前时间。您可以使用DateTime.Now.TimeOfDayTimeSpan 获取当前时间。

所以最终的结果应该是:

var difference = DateTime.Now.TimeOfDay.Subtract(_TimeSpan); 

【讨论】:

    猜你喜欢
    • 2017-07-09
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    • 2021-11-07
    • 2018-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多