テキストボックスに1時間と数分だけ表示したい
var test = dataRow.Field<TimeSpan>("fstart").ToString();
//test ="08:00:00"
var tb = (TextBox) gridViewRow.Cells[2].FindControl("fstart");
tb.Text = test;
時間と分のみを表示する方法"hh.mm"
データをTimeSpanに変換してからformat:"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形式文字列
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}";
TimeSpanメソッドを使用できます。
ToString("hh':'mm")
// or
ToString(@"hh\:mm")
また、ここで利用可能なすべての形式を確認してください 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;
これは次の方法で実現できます。
var hhmm = TimeSpan.FromMinutes(minutes).ToString(@"hh\:mm")
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;