Как бы рассчитать оставшееся время в winform? - PullRequest
0 голосов
/ 19 ноября 2018

Привет любые идеи о том, как рассчитать время, оставшееся до определенного часа, то есть мы начинаем обратный отсчет с if currentTime >= TimeSpan.Parse("06:40") && currentTime <= TimeSpan.Parse("07:25") а затем мы анализируем текущий час и конечный час (в этом примере 7:25) и создаем метку, показывающую, сколько минут и секунд осталось. Я пытался сделать что-то с вычитанием временного промежутка и конечного временного промежутка, но это не сработало вообще.

РЕДАКТИРОВАТЬ: Основная идея что-то вроде этого, но я не могу заставить его работать, используя TimeSpan ни DateTime

string myTime;

void timer()
    {
        var endTime = DateTime.Parse(myTime);
        var beginTime = DateTime.Now.TimeOfDay;
    }

private void timer1_Tick(object sender, EventArgs e)
    {
        var endTime = DateTime.Parse(myTime);
        var beginTime = DateTime.Now.TimeOfDay;
        TimeSpan difference = endTime - beginTime;
        TimeSpan currentTime = DateTime.Now.TimeOfDay;
        if (currentTime >= TimeSpan.Parse("06:40") && currentTime <= TimeSpan.Parse("07:25"))
        {
            label5.Text = "0";
            myTime = "07:25";
            timer();
            label6.Text = difference;
        }
    }

1 Ответ

0 голосов
/ 19 ноября 2018

Используйте DateTime вместо TimeSpan при разборе точек во времени. TimeSpan для продолжительности. Разница между двумя точками во времени (DateTime) будет длительностью (TimeSpan).

var end = DateTime.Parse("21:00");
var now = DateTime.Now;      // Could also be some other point in time
TimeSpan timeLeft = end-now;
Console.WriteLine(timeLeft);

Результат:

00: 24: 25,8581440

Если вам не нравятся секунды и доли секунд, вы можете использовать пользовательский формат , например,

Console.WriteLine(timeLeft.ToString("hh\\:mm"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...