Преобразование TimeSpan из формата «чч: мм: сс» до «чч: мм»

Обновить

December 2018

Просмотры

66.1k раз

30

Я хочу показать в TextBox только час и минуты

var test = dataRow.Field<TimeSpan>("fstart").ToString();  
//test ="08:00:00"  
var tb = (TextBox) gridViewRow.Cells[2].FindControl("fstart");
tb.Text = test;

как показать только часы и минуты "hh.mm"

6 ответы

0

Вы можете достичь этого:

  var hhmm = TimeSpan.FromMinutes(minutes).ToString(@"hh\:mm")
10

Там нет необходимости конвертировать hh.mm.ssв hh.mm. TimeSpanхранятся в виде числа клещей (1 тик == 100 наносекунд) и не имеют присущий формата. То , что вы должны сделать, чтобы преобразовать TimeSpanв читаемую строку человека! Это называется форматированием. Если вы не задаете формат явно, будет использоваться формат по умолчанию. В этом случае hh.mm.ss.

string formatted = timespan.ToString(@"hh\.mm");

Примечание: Эта перегрузка , ToStringтак как .NET 4.0 существует. Он не поддерживает даты и время символов заполнителя разделительных! Поэтому вы должны включить их (экранирование) строковые литералы.

Обычный способ форматирования строк, кажется, не работает по какой-то причине (протестировано с .NET 3.5). (Это не делает никакой разницы избежать ли символ-разделитель или нет):

var timespan = TimeSpan.FromSeconds(1234);
string formatted = String.Format("{0:hh.mm}", timespan); // ==> 00:20:34

Тем не менее, вы можете создать строку, как это

string formatted =
    String.Format("{0:00}.{1:00}", Math.Floor(timespan.TotalHours), timespan.Minutes);

или начиная с VS2015 / C # 6.0, используя интерполяцию строки:

string formatted = $"{Math.Floor(timespan.TotalHours):00}.{timespan.Minutes:00}";
61

Вы должны преобразовать данные в TimeSpan, а затем использовать формат:"hh\:mm"

string test ="08:00:00";
TimeSpan ts = TimeSpan.Parse(test);
Console.Write(ts.ToString(@"hh\:mm"));

В твоем случае:

var test = dataRow.Field<TimeSpan>("fstart").ToString(@"hh\:mm"));

Помните, чтобы избежать толстой кишки :

Вы можете увидеть: Пользовательские TimeSpan Формат строк

0

Предыдущие решения не выполняются, если часы> 24, попробуйте это решение, если у вас есть время в течение нескольких минут очень больших

int minutes = 159000;
TimeSpan t = new TimeSpan(0, minutes, 0);

String HOURS = Math.Round(t.TotalHours, 0).ToString();
if (HOURS.Length==1)
{
    HOURS = "0"+HOURS;
}


String MINUTES = t.Minutes.ToString();
if (MINUTES.Length == 1)
{
    MINUTES = "0" + MINUTES;
}


String RESULT = HOURS + ":" + MINUTES;
2
var test = dataRow.Field<TimeSpan>("fstart").ToString("hh.mm");  
//test ="08:00"  
var tb = (TextBox) gridViewRow.Cells[2].FindControl("fstart");
tb.Text = test;
6

Вы можете использовать методы TimeSpan:

ToString("hh':'mm")
// or
ToString(@"hh\:mm")

Кроме того, проверьте все доступные форматы здесь http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx