سؤال

أواجه مشاكل في تحديد أفضل طريقة للتعامل مع قياسات الوقت وتخزينها.

لدي تطبيق يحتوي على مربع نص يسمح للمستخدمين بإدخال الوقت بتنسيق hh:mm:ss أو mm:ss.

لذلك كنت أخطط لتحليل هذه السلسلة، ورمزها على النقطتين وإنشاء TimeSpan (أو استخدام TimeSpan.Parse() وإضافة "00:" إلى حالة mm:ss) لمنطق عملي.نعم؟

كيف يمكنني تخزين هذا كما هو الحال في قاعدة البيانات بالرغم من ذلك؟ماذا سيكون نوع الحقل؟يبدو أن DateTime خاطئ.لا أريد أن يتم تخزين الوقت 00:54:12 كـ 1901-01-01 00:54:12 الذي يبدو سيئًا بعض الشيء؟

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

المحلول

يحتوي TimeSpan على Int64 القراد الممتلكات التي يمكنك تخزينها بدلا من ذلك، و البناء الذي يأخذ قيمة القراد.

نصائح أخرى

أعتقد أن أبسط طريقة هي تحويل إدخال المستخدم إلى عدد صحيح من الثواني.إذن 54:12 == 3252 ثانية، لذا قم بتخزين 3252 في قاعدة البيانات الخاصة بك أو في أي مكان.ثم عندما تحتاج إلى عرضه للمستخدم، يمكنك تحويله مرة أخرى.

لفترات أقل من يوم، فقط استخدم ثواني كما قال الآخرون.

لفترات أطول، يعتمد ذلك على محرك ديسيبل الخاص بك.إذا كان SQL Server، قبل الإصدار 2008، فأنت تريد تاريخًا ووقتًا.لا بأس، يمكنك فقط تجاهل التاريخ الافتراضي 1/1/1900 الذي سيكون لديهم جميعًا.إذا كنت محظوظًا بما يكفي لامتلاك SQL Server 2008، فهناك أنواع بيانات منفصلة للتاريخ والوقت يمكنك استخدامها.تتمثل ميزة استخدام نوع التاريخ/الوقت الحقيقي في استخدام الدالة DateDiff لمقارنة الفترات.

تحتوي معظم قواعد البيانات على نوع من نوع الفاصل الزمني.تعتمد الإجابة على قاعدة البيانات التي تتحدث عنها.بالنسبة إلى Oracle، فهي مجرد نقطة عائمة تمثل عدد الأيام (بما في ذلك الأيام الكسرية).يمكنك إضافة/طرح ذلك إلى/من أي نوع تاريخ وستحصل على الإجابة الصحيحة.

كعدد صحيح للثواني (أو بالمللي ثانية حسب الاقتضاء)

هل تقوم بجمع وقت البدء ووقت التوقف؟إذا كان الأمر كذلك، فيمكنك استخدام نوع البيانات "الطابع الزمني"، إذا كان نظام إدارة قواعد البيانات لديك يدعم ذلك.إذا لم يكن الأمر كذلك، تمامًا كنوع التاريخ/الوقت.لقد قلت الآن أنك لا تريد تخزين جزء التاريخ - ولكن ضع في اعتبارك الحالة التي تمتد فيها الفترة الزمنية منتصف الليل - فأنت تبدأ عند الساعة 23:55:01 وتنتهي عند الساعة 00:05:14، على سبيل المثال - ما لم لديك أيضًا التاريخ هناك.توجد وظائف مدمجة قياسية لإرجاع الوقت المنقضي (بالثواني) بين قيمتي التاريخ والوقت.

اذهب مع الأعداد الصحيحة للثواني أو الدقائق.ربما تكون الثواني أفضل.لن تندم أبدًا على اختيار شيء ما بدقة شديدة.أيضًا، بالنسبة لواجهة المستخدم الخاصة بك، فكر في استخدام مدخلات نصية متعددة، فلا داعي للقلق بشأن قيام المستخدم بكتابة ": بشكل صحيح.من الأسهل أيضًا إضافة قيود أخرى مثل قيم الدقائق والثانية التي تحتوي على 0-59.

ويجب أن يقوم النوع int بذلك، حيث يقوم بتخزينه في ثوانٍ وتحليله ذهابًا وإيابًا

http://msdn.microsoft.com/en-us/library/ms187745.aspx

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top