سؤال

أريد حساب الفترة الزمنية بين مرتين والتي قمت بحفظها في قاعدة البيانات.لذلك أريد حرفيًا أن أعرف طول الفترة الزمنية بين القيمتين.

14:10:20 - 10:05:15 = 02:05:05

وبالتالي ستكون النتيجة 02:05:05.

كيف يمكنني تحقيق ذلك باستخدام C#؟

14:10:20 هو التنسيق الذي حفظته به في قاعدة البيانات الخاصة بي.

هل كانت مفيدة؟

المحلول

اقرأ قيمتي الوقت في متغيرات TimeSpan، ثم قم بإجراء .Subtract() على متغير TimeSpan الأكبر للحصول على نتيجة TimeSpan.

على سبيل المثال TimeSpan difference = t1.Subtract(t2);.

نصائح أخرى

ستكون خطوتك الأولى هي الحصول على القيم الزمنية المخزنة في قاعدة البيانات الخاصة بك في .NET DateTime الهياكل.

إذا قمت بتخزينها كقيم SQL-DateTime في قاعدة البيانات، فيمكنك الحصول عليها مباشرةً بتنسيق DateTime.سيبدو شيء هكذا:

SQLCommand getTimeCommand = new SQLCommand("SELECT time FROM table", dbConnection);
SQLDataReader myReader = getTimeCommand.ExecuteReader();
while (myReader.Read())
{
    DateTime time = myReader.GetDateTime(0);
}
myReader.Close();

قد يختلف التنفيذ الخاص بك، راجع وثائق ADO.NET في مكتبة MSDN.

إذا كان لديك بالفعل سلسلة تمثل الوقت، فيمكنك تحليل السلسلة إلى ملف DateTime باستخدام الأساليب الثابتة

DateTime.Parse 

أو

DateTime.ParseExact

في حالتك قد تحتاج إلى استخدام ParseExact, ، والتي يمكن تزويدها بسلسلة تنسيق تحدد كيفية قراءة السلسلة.يجب العثور على أمثلة في مكتبة MSDN.

يتم تخزين المدد الزمنية في .NET داخل ملف TimeSpan البنية.يعد الحصول على الوقت المنقضي بين أوقات التاريخ أمرًا سهلاً:

DateTime time1, time2; //filled with your timevalues from the db
TimeSpan elapsed = d2 - d1;

elapsed يحتوي الآن على الفترة الزمنية بين الاثنين DateTimes.هناك العديد من الأعضاء للبنية للوصول إلى TimeSpan.ابحث في مكتبة MSDN للعثور على ما تحتاجه.

تدعم كائنات DateTime عامل التشغيل "-" حتى تتمكن من قراءة أوقاتك في هذه الكائنات وطرحها.للاختبار، تحقق من هذا:

DateTime then = DateTime.Now;
Thread.Sleep(500);
DateTime now = DateTime.Now;
TimeSpan time = now - then;
MessageBox.Show(time.ToString());
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top