it-swarm.com.de

Konvertieren Sie TimeSpan von Format "hh: mm: ss" in "hh: mm".

Ich möchte in einer Textbox nur Stunden und Minuten anzeigen

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

nur Stunden und Minuten anzeigen "hh.mm"

30
Alex

Sie müssen Ihre Daten in TimeSpan konvertieren und dann das Format verwenden: "hh\:mm"

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

In Ihrem Fall:

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

Denken Sie daran, den Doppelpunkt zu : zu verlassen.

Möglicherweise sehen Sie: Benutzerdefinierte TimeSpan-Formatierungsstrings

62
Habib

Eine Konvertierung von hh.mm.ss in hh.mm ist nicht erforderlich. TimeSpan wird als Anzahl von Ticks gespeichert (1 Tick = 100 Nanosekunden) und hat kein inhärentes Format. Sie müssen die TimeSpan in eine vom Menschen lesbare Zeichenfolge konvertieren! Dies wird als Formatierung bezeichnet. Wenn Sie nicht explizit ein Format angeben, wird ein Standardformat verwendet. In diesem Fall hh.mm.ss.

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

Hinweis: Diese Überladung von ToString existiert seit .NET 4.0. Es unterstützt keine Platzhalter-Trennsymbole für Datum und Uhrzeit! Daher müssen Sie sie als (entkommene) String-Literale angeben.  

Die übliche Art, Strings zu formatieren, scheint aus irgendeinem Grund nicht zu funktionieren (getestet mit .NET 3.5). (Es macht keinen Unterschied, ob Sie das Trennzeichensymbol mit einem Escapezeichen versehen oder nicht):

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

Sie können die Zeichenfolge jedoch so erstellen

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

oder beginnend mit VS2015/C # 6.0 unter Verwendung der Zeichenketteninterpolation:

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

Sie können TimeSpan-Methoden verwenden:

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

Überprüfen Sie auch alle verfügbaren Formate hier http://msdn.Microsoft.com/en-us/library/8kb3ddd4.aspx

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

Sie können dies erreichen durch:

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

Die vorherigen Lösungen werden nicht ausgeführt, wenn Stunden> 24 sind. Versuchen Sie diese Lösung, wenn Sie Zeit in Minuten haben, die sehr groß ist

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
daniele3004