グリッドの出力では、TimeSpan
を計算し、そのTotalHours
を取得します。例えば.
_(Eval("WorkedHours") - Eval("BadgedHours")).TotalHours
_
目標はTotalHours
を_39:44
_として表示することなので、値を_7.5
_から_07:30
_に変換する必要があります。これは問題ありません...それが否定的でない限り!
TimeSpan
からHours
オブジェクトを作成できます。
_TimeSpan.FromHours( (Eval("WorkedHours") - Eval("BadgedHours")).TotalHours)
_
負の場合、.ToString("HH:mm")
メソッドを使用するためにDateTime
に変換できず、TimeSpan
オブジェクトはフォーマット文字列をサポートしません。
TimeSpan.Duration
メソッドはありませんか?これであなたがやろうとしていることを処理できると思います。
static string ToHMString(TimeSpan timespan) {
if (timespan.Ticks < 0) return "-" + ToHMString(timespan.Negate());
return timespan.TotalHours.ToString("#0") + ":" + timespan.Minutes.ToString("00");
}
Console.WriteLine(ToHMString(TimeSpan.FromHours(3))); //Prints "3:00"
Console.WriteLine(ToHMString(TimeSpan.FromHours(-27.75))); //Prints "-28:45"
これは、タイムスパンが24時間より長い場合にも正しく機能します。
-1を掛けるか、絶対値関数を使用します。
TimeSpanクラスにはNegateメソッドがあります。
MSDNドキュメントへのリンク: TimeSpan.Negate Method()
動作します。これを試してください
mytimespam.Negate();
簡単な解決策は次のとおりです。
string format = "HH:mm";
if(hours < 0)
format = "-" + format;
hours = Math.Abs(hours)
こんにちは私はこれを私が書いているコードのビットに作りました、それが役立つことを願っています
(結果)はint変数です
(TimeSpan.FromMinutes(result)) < TimeSpan.Zero ? "-" + TimeSpan.FromMinutes(result).ToString(@"hh\:mm") : "" + TimeSpan.FromMinutes(result).ToString(@"hh\:mm");
すべての場所を確認しましたが、なぜこの方法を使用して終了したのかという正しい答えが得られませんでした
TimeSpan diff = actualout.Subtract(actualin);
string a =(diff.ToString()).ToString();
if(a.Contains("-"))
{
diff = new TimeSpan(0,0,0,0);
}
TimeSpan Diff = Date1 - Date2;
if ((int)Diff.TotalDays < 0) { // your code }