Je veux afficher dans une zone de texte uniquement 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 afficher uniquement les heures et les minutes "hh.mm"
Vous devez convertir vos données en TimeSpan, puis utiliser le format suivant: "hh\:mm"
string test ="08:00:00";
TimeSpan ts = TimeSpan.Parse(test);
Console.Write(ts.ToString(@"hh\:mm"));
Dans ton cas:
var test = dataRow.Field<TimeSpan>("fstart").ToString(@"hh\:mm"));
N'oubliez pas d'échapper au colon :
Vous pouvez voir: Chaînes de format TimeSpan personnalisées
Il n’est pas nécessaire de convertir de hh.mm.ss
à hh.mm
. TimeSpan
est stocké sous forme de ticks (1 tick == 100 nanosecondes) et n'a pas de format inhérent. Ce que vous devez faire, c'est convertir la TimeSpan
en une chaîne lisible par l'homme! Ceci s'appelle le formatage. Si vous ne spécifiez pas de format explicitement, un format par défaut sera utilisé. Dans ce cas, hh.mm.ss
.
string formatted = timespan.ToString(@"hh\.mm");
Remarque: cette surcharge de ToString
existe depuis .NET 4.0. Il ne supporte pas les symboles de séparateur d'espace réservé de date et heure! Par conséquent, vous devez les inclure en tant que littéraux (échappés).
La manière habituelle de formater les chaînes ne semble pas fonctionner pour une raison étrange (testé avec .NET 3.5). (Peu importe si vous échappez ou non au symbole 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 en commençant par VS2015/C # 6.0, en utilisant une interpolation de chaîne:
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;
Vous pouvez y parvenir en:
var hhmm = TimeSpan.FromMinutes(minutes).ToString(@"hh\:mm")
Les solutions précédentes ne fonctionnent pas si heures> 24, essayez cette solution si vous avez le temps en minutes très gros
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;