Conversion Durée du format "hh:mm:ss" en " hh: mm"

je veux afficher dans un TextBox seulement l'heure et les minutes

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

comment montrer seulement des heures et des minutes "hh.mm"

30
demandé sur Alex 2012-10-01 16:24:11

6 réponses

vous devez convertir vos données en TimeSpan et ensuite utiliser le format:"hh\:mm"

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

dans votre cas:

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

n'oubliez pas d'échapper le côlon :

on peut voir: Personnaliser TimeSpan Chaînes De Format

61
répondu Habib 2012-10-01 12:29:04

il n'est pas nécessaire de convertir hh.mm.sshh.mm. TimeSpan est stocké en nombre de tiques (1 tique == 100 nanosecondes) et n'a pas de format inhérent. Ce que vous devez faire, c'est convertir le TimeSpan dans une chaîne lisible par l'homme! Cela s'appelle la mise en forme. Si vous ne spécifiez pas un format explicitement, un format par défaut sera utilisé. Dans ce cas hh.mm.ss.

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

Note: Cette surcharge de ToString existe depuis .NET 4.0. Il ne supporte pas la date et l'heure espace réservé symbole de séparateur de! Par conséquent, vous devez les inclure en tant que chaîne de caractères littéraux (échappés).

la façon habituelle de formater les chaînes ne semble pas fonctionner pour une raison étrange (testé avec .NET 3.5). (Peu importe que vous échappiez ou non au symbole du séparateur):

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

Cependant, vous pouvez construire la chaîne comme ceci

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

, ou de commencer avec VS2015 / C# 6.0, l'aide de la chaîne d'interpolation:

string formatted = $"{Math.Floor(timespan.TotalHours):00}.{timespan.Minutes:00}";
10
répondu Olivier Jacot-Descombes 2018-03-28 15:54:24

Vous pouvez utiliser les méthodes TimeSpan:

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

vérifiez Également tous les formats disponibles ici http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

6
répondu Danilo Vulović 2016-10-25 22:23:51
var test = dataRow.Field<TimeSpan>("fstart").ToString("hh.mm");  
//test ="08:00"  
var tb = (TextBox) gridViewRow.Cells[2].FindControl("fstart");
tb.Text = test;
2
répondu IvoTops 2012-10-01 12:27:21

les solutions précédentes ne fonctionnent pas si heures > 24, essayez cette solution si vous avez le temps en minutes très grand

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;
0
répondu daniele3004 2016-12-20 08:43:17

Vous pouvez atteindre cet objectif par:

  var hhmm = TimeSpan.FromMinutes(minutes).ToString(@"hh\:mm")
0
répondu Ravi Rajan 2018-04-16 10:57:16