-1

2 つの時刻の間の分数を計算するメソッドがあります。このようなもの:

DateTime UserLocalTime = DateTime.UtcNow.ConvertToUserTime(UserTimezoneID);

double TheOffset = (UserLocalTime - DateTime.UtcNow).TotalMinutes;

return TheOffset.ToString();

問題は、分や秒などを計算しているため、119.83723 のような値が返されることです。

どうすればこれを修正できますか? 残念ながら 120.11233 も返されることがあるので、丸めもまったく役に立たないかもしれません。

ご提案いただきありがとうございます。

Update1: (int)(Math.Round((UserLocalTime - DateTime.UtcNow).TotalMinutes)); 119 を返します。

更新 2: これを試してみました。動作しているように見えますが、オフセットが変な場合は失敗します (5:30 の場合があり、答えは 330 分である必要があります)。

int TheOffset = (int)(Math.Round((UserLocalTime - DateTime.UtcNow).TotalHours));
TheOffset = TheOffset * 60;
4

2 に答える 2

2
  • 議事録だけを取得したいですか? Minutesの代わりに使用してTotalMinutesください。
  • 合計分数を取得したいが、その下の測定値は取得したくないですか? を使用し(int)TotalMinutesます。切り捨てます。

残念ながら 120.11233 も返されることがあるので、丸めもまったく役に立たないかもしれません。

明確にできますか?丸めの120.11233結果は120...それがあなたが望むものだと思いますよね?

于 2012-05-10T23:59:13.210 に答える
0

あなたが使用することができます:

  • 最も近い整数を取得するMath.Round()
  • Math.Floor()を使用して、指定された数値以下の最大の整数を取得します。
  • Math.Ceiling()を使用して、指定された数値以上の最小の整数値を取得します。

  • 119,895 -> フロア = 119、天井 = 120、ラウンド = 120

  • 119,175 -> 床 = 119、天井 = 120、円形 = 119

目的の関数を TheOffset に適用します。

天井または床が必要な場合は、負または正のオフセットで使用される関数を逆にする必要があります。

だから、あなたはあなたが取得したいものを決定します。

于 2012-05-11T00:08:19.547 に答える