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"
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
il n'est pas nécessaire de convertir hh.mm.ss
hh.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}";
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
var test = dataRow.Field<TimeSpan>("fstart").ToString("hh.mm");
//test ="08:00"
var tb = (TextBox) gridViewRow.Cells[2].FindControl("fstart");
tb.Text = test;
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;
Vous pouvez atteindre cet objectif par:
var hhmm = TimeSpan.FromMinutes(minutes).ToString(@"hh\:mm")