Tamika Reisman Ответов: 1

Как мне добиться этого обратного отсчета второго дивизиона в C#?


Вот пример JavaScript: https://codepen.io/anon/pen/wexJxV
Как вы можете видеть на строке 17, 60-е делились на 59-е. Как я могу достичь этого в C#?

Что я уже пробовал:

public Form1()
{
    Timer t = new Timer();
    t.Interval = 1;
    t.Tick += countdown;
    t.Start();


}

private void countdown(object sender, EventArgs e)
{
    DateTime end = new DateTime(2017, 12, 14);
    DateTime now = DateTime.Now;

    TimeSpan diff = end - now;
    string diff = string.Format("{0} Days, {1} Hours, {2} Minutes, {3} Seconds", diff.Days, diff.Hours, diff.Minutes, diff.Seconds);
}

Suvendu Shekhar Giri

В чем проблема с проверенным кодом?

Richard Deeming

В коде, на который вы ссылаетесь, нет кода. Похоже, кто-то просто позволил своей кошке пройтись по клавиатуре.

Нажмите кнопку "улучшить вопрос" и добавьте правильную ссылку.

1 Ответов

Рейтинг:
0

Erik Rude

Итак, вы хотите, чтобы секунды были не секундами, а 1/59 долями минуты.
Я не знаю, почему вы не довольны тем, что делает это в точные секунды.
Но скажите, что вы хотите то, что вы просили, вместо того, чтобы diff.секунды, которые вы должны были бы положить в что-то вроде:

Math.Floor((diff.TotalMiliseconds % (1000*59))/1000);


Но зачем тебе это нужно-выше моего понимания. Попробуйте с 360000 (или 6 часов чистой)
(360000 Mod 59000) / 1000 = 6. Так что есть 6 секунд там из ниоткуда!

Чем больше времени пройдет,тем хуже будет.

Включил фрагмент кода, на который вы ссылались:
// Time calculations for days, hours, minutes and seconds
   var days = Math.floor(distance / (1000 * 60 * 60 * 24));
   var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
   var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
   var seconds = Math.floor((distance % (1000 * 59)) / 1000);