4

こんにちは皆さん、興味深い状況があります。

20:00 から 01:00 AM までの時間 (分単位) を数えたいのですが、方法がわかりません。

pabaigosLaikoLaukelis = 01:00;
pradziosLaikoLaukelis = 20:00;
TimeSpan dt = Convert.ToDateTime(pabaigosLaikoLaukelis)- Convert.ToDateTime(pradziosLaikoLaukelis);
int minutes = (int)dt.TotalMinutes;

結果が得られます -> -1140 分ですが、その答えは 20:00 から 01:00 までのわずか 5 時間である必要があります。

とても簡単なことは知っていますが、どうすればいいのかわかりません。

4

7 に答える 7

10

あなたはこのようなことをすることができます

        //Datetime(Year,month,day,hour,min,sec)
        DateTime date1 = new DateTime(2012, 1, 1, 20, 0, 0);
        DateTime date2 = new DateTime(2012, 1, 2, 1, 0, 0);
        string minutes = (date2.Subtract(date1).TotalMinutes).ToString();

テスト済みで、300 分 (5 時間) 動作します

于 2013-03-28T13:01:45.300 に答える
3

次のように、日の部分を含む完全な日時文字列を使用して、午前 01:00 が 20:00 より 1 日後であることを示します。

int minutes = Convert.ToDateTime("01/02/2012 01:00").Substract(Convert.ToDateTime("01/01/2012 20:00")).TotalMinutes;
于 2013-03-28T12:19:35.903 に答える
0

20:00 と 22:00 の差は 2 時間ではなく 26 時間になるため、endTime に 1 日を追加する場合は注意してください。

差が正(同日)か負(翌日)かを確認するだけです

string pabaigosLaikoLaukelis = "01:00";
string pradziosLaikoLaukelis = "20:00";
// This should be 5 hours
TimeSpan dt = Convert.ToDateTime(pabaigosLaikoLaukelis) - Convert.ToDateTime(pradziosLaikoLaukelis);
int hours = (int)dt.TotalHours;
hours = hours < 0 ? 24 + hours : hours;
// This should be 19 hours
dt = Convert.ToDateTime(pradziosLaikoLaukelis) - Convert.ToDateTime(pabaigosLaikoLaukelis);
hours = (int)dt.TotalHours;
hours = hours < 0 ? 24 + hours : hours;
于 2013-03-28T12:29:10.960 に答える
0

データ計算を試みる前に、2 つの文字列変数を少し準備する必要があります。

string pabaigosLaikoLaukelis = "01:00";
string pradziosLaikoLaukelis = "20:00";
pabaigosLaikoLaukelis = DateTime.Today.ToString("dd/MM/yyyy") + " " + pabaigosLaikoLaukelis;
pradziosLaikoLaukelis = DateTime.Today.AddDays(-1).ToString("dd/MM/yyyy") + " " + pradziosLaikoLaukelis;

TimeSpan dt = Convert.ToDateTime(pabaigosLaikoLaukelis) - Convert.ToDateTime(pradziosLaikoLaukelis);
Console.WriteLine("{0:D2}:{1:D2}", dt.Hours, dt.Minutes);
于 2013-03-28T12:29:52.577 に答える
0

減算する日を指定する必要があります (今日の午前 1:00) - (今日の午後 8:00)

(明日の午前 1:00) - (今日の午後 8:00) を減算する必要があると思います

于 2013-03-28T12:17:08.167 に答える
0

最初に 1 日追加してTimeSpanを使用する必要がありますTotalHours

var pabaigosLaikoLaukelis = "01:00";
var pradziosLaikoLaukelis = "20:00";
var oneDayTimeSpan = new TimeSpan(1, 0, 0, 0);
TimeSpan dt = TimeSpan.Parse(pabaigosLaikoLaukelis).Add(oneDayTimeSpan) - TimeSpan.Parse(pradziosLaikoLaukelis);
int minutes = (int)dt.TotalHours; // 5 hours

連想操作の使用:

var pabaigosLaikoLaukelis = "21:00";
var pradziosLaikoLaukelis = "20:00";
var leftHours = (int)TimeSpan.Parse(pabaigosLaikoLaukelis).TotalHours;
var rightHours = (int)TimeSpan.Parse(pradziosLaikoLaukelis).TotalHours;
// Now we do a Modulus operation which will assure
// 23 > hours > 0
// Make sure to check that leftHours != 0 or rightHours != 0
int hours = (Math.Abs(leftHours * rightHours) + leftHours) % rightHours; //Modulus
var hoursTimeSpan = TimeSpan.FromHours(hours);
于 2013-03-28T12:21:44.027 に答える