Простой способ изменить 180 на 03:00 - PullRequest
2 голосов
/ 11 февраля 2009

Эй! Я пытаюсь изменить количество секунд на правильный формат отметки времени. Как я делаю это, чтобы изменить 180 на 03: 00

private void writeTime(int tempo)
        {
            TimeSpan otempo = new TimeSpan(0, 0, tempo);        


            string minutos = ((otempo.Minutes <= 9) ? "0" : "") + otempo.Minutes.ToString();
            string segundos = ((otempo.Seconds <= 9) ? "0" : "") + otempo.Seconds.ToString();

            label1.Text = minutos + ":" + segundos;

            centrarLabel();
        }

Это дает мне 180 в правильном формате. Я просто хочу знать, есть ли более простой способ. Эта функция может вызываться много-много раз, и я не хочу каждый раз создавать новый экземпляр TimeSpan, поскольку думаю, что это может вызвать проблемы с памятью и т. Д. Я пытался использовать класс DateTime, но ... я просто не вижу, как я могу передать ему секунды, и это дает мне правильный формат: (

Я не так хорош с c #. Я действительно пытаюсь учиться :) Спасибо

Ответы [ 5 ]

3 голосов
/ 11 февраля 2009
TimeSpan t = TimeSpan.FromSeconds(180);
string s = String.Format("{0:00}:{1:00}", t.Hours, t.Seconds);
3 голосов
/ 11 февраля 2009

использование

label.Text = string.Format("{0:d2}:{1:d2}", otempo.Minutes, otempo.Seconds);

Вы можете использовать oTempo.TotalMinutes, если ваш счетчик минут может вырасти до 60 ...

И не забудьте также указать культуру.

3 голосов
/ 11 февраля 2009
    int tempo = 180;
    TimeSpan time = TimeSpan.FromSeconds(tempo);
    string txt = string.Format(
        "{0:00}:{1:00}", time.Minutes, time.Seconds);

(правка). Как уже отмечалось, у TimeSpan нет непосредственных проблем с памятью, поскольку это struct. Однако, если вы хотите быть параноиком:

int tempo = 180;
string txt = new StringBuilder(5)
    .Append((tempo / 60).ToString().PadLeft(2, '0')).Append(':')
    .Append((tempo % 60).ToString().PadLeft(2, '0')).ToString();
1 голос
/ 11 февраля 2009

Как уже упоминалось, вероятно, нет необходимости беспокоиться о создании нового TimeSpan для преобразования, но самый простой способ отформатировать его без создания каких-либо временных объектов это:

String.Format("{0:00}:{1:00}", tempo / 60, tempo % 60)
1 голос
/ 11 февраля 2009

TimeSpan - это структура, она (в данном случае) распределяется в стеке, поэтому ее стоимость незначительна, особенно если учесть, что вам все равно нужно сделать хотя бы одну строку, что является дорогой частью.

TimeSpan.FromSeconds(tempo).ToString();

должно быть достаточно для ваших нужд до 180 секунд -> "00:03:00" приемлемо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...