Saya memiliki datagridview dalam aplikasi saya yang menampung waktu mulai dan selesai. Saya ingin menghitung jumlah menit antara dua waktu ini. Sejauh ini saya sudah mendapatkan:
var varFinish = tsTable.Rows[intCellRow]["Finish Time"];
TimeSpan varTime = (DateTime)varFinish - (DateTime)varValue;
int intMinutes = TimeSpan.FromMinutes(varTime);
Tetapi baris terakhir tidak dapat dikompilasi karena dikatakan saya menggunakan argumen yang tidak valid untuk konstruktor Timespan. Saya telah meneliti sedikit tentang cara menghitung jumlah menit antara dua kali, tetapi saya sedikit menemui hambatan. Adakah yang bisa menasihati saya tentang cara terbaik untuk mencapai tujuan saya.
EDIT /
Sekarang kode saya adalah sebagai berikut:
var varFinish = tsTable.Rows[intCellRow]["Finish Time"];
TimeSpan varTime = (DateTime)varFinish - (DateTime)varValue;
int intMinutes = (int)varTime.TotalMinutes;
Tapi saya mendapatkan gips yang tidak valid di baris kedua. Baik varFinish dan varValue adalah waktu, misalnya pukul 10:00 dan 8:00 mengatakan. Jadi tidak yakin mengapa mereka tidak mentransmisikan untuk mengetik DateTime?
Jawaban:
Coba ini
DateTime startTime = varValue DateTime endTime = varTime TimeSpan span = endTime.Subtract ( startTime ); Console.WriteLine( "Time Difference (minutes): " + span.TotalMinutes );
Edit: Jika Anda mencoba 'span.Minutes', ini hanya akan mengembalikan menit dari rentang waktu [0 ~ 59], untuk mengembalikan jumlah semua menit dari interval ini, cukup gunakan 'span.TotalMinutes'.
sumber
TotalMinutes()
?span.Minutes
mengembalikan angka [0..59]. Gunakanspan.TotalMinutes
sebagai gantinyadouble minutes = varTime.TotalMinutes; int minutesRounded = (int)Math.Round(varTime.TotalMinutes);
TimeSpan.TotalMinutes : Jumlah total menit yang diwakili oleh instance ini.
sumber
Dalam kode pertanyaan Anda, Anda menggunakan secara
TimeSpan.FromMinutes
tidak benar. Silakan lihat Dokumentasi MSDN untuk TimeSpan.FromMinutes, yang memberikan tanda tangan metode berikut:public static TimeSpan FromMinutes(double value)
karenanya, kode berikut tidak dapat dikompilasi
var intMinutes = TimeSpan.FromMinutes(varTime); // won't compile
Sebagai gantinya, Anda dapat menggunakan properti TimeSpan.TotalMinutes untuk melakukan aritmatika ini. Misalnya:
TimeSpan varTime = (DateTime)varFinish - (DateTime)varValue; double fractionalMinutes = varTime.TotalMinutes; int wholeMinutes = (int)fractionalMinutes;
sumber
Anda hanya perlu menanyakan
TotalMinutes
properti seperti inivarTime.TotalMinutes
sumber
Jika perbedaan antara endTime dan startTime lebih besar dari atau sama dengan 60 Minutes , pernyataan:
endTime.Subtract(startTime).Minutes;
akan selalu kembali(minutesDifference % 60)
. Tentunya yang tidak diinginkan ketika kita hanya berbicara tentang menit (bukan jam di sini).Berikut adalah beberapa cara jika Anda ingin mendapatkan
total number of minutes
(dalam typecasts berbeda):// Default value that is returned is of type *double* double double_minutes = endTime.Subtract(startTime).TotalMinutes; int integer_minutes = (int)endTime.Subtract(startTime).TotalMinutes; long long_minutes = (long)endTime.Subtract(startTime).TotalMinutes; string string_minutes = (string)endTime.Subtract(startTime).TotalMinutes;
sumber