الآثار المترتبة على استخدام أسلوب VB.NET DateAndTime.DateDiff مع C#

StackOverflow https://stackoverflow.com/questions/1603074

سؤال

أقوم بإنشاء تطبيق ويب ASP.NET جديد استنادًا إلى تطبيق قديم (Classic ASP).الأشخاص الذين قاموا ببناء هذا الكود قبل 4 أو 5 سنوات، استخدموا الكثير من وظائف VBScript مثل DateDiff.

أعمل حاليًا على جهاز محاكاة يقوم بالكثير من العمليات الحسابية باستخدام التواريخ.وأحصل على فرق مزعج بين هذه التواريخ لأنه ليس لدي طريقة سهلة للحصول على الفرق بين الأشهر في C# كما فعلوا في VB 6.

لذا، اخترت مسار استخدام DateAndTime.DateDiff من مساحة الاسم Microsoft.VisualBasic على تطبيق الويب ASP.NET الخاص بي.

هل تعلمون يا رفاق ما إذا كانت هناك بعض الآثار المترتبة على ذلك؟أنا قلق قليلاً بشأن هذا النهج.

هتافات،

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

المحلول

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

وتحرير: أريد أيضا أن نلاحظ أن Microsoft.VisualBasic تم تنفيذه من الصفر ل. NET. أنها لا تحتوي على رمز القديمة.

نصائح أخرى

أحد الاحتمالات هو استخدام TimeSpan كما أشار Itay، ولكن بتقسيمه على 30.4375 (متوسط ​​عدد الأيام في الشهر)، مع تجاهل الأشهر الكسرية.هذا قريب بدرجة كافية بالنسبة للأشياء التي أعمل عليها حاليًا، ولكنه قد لا يكون دقيقًا بدرجة كافية بناءً على احتياجاتك.على سبيل المثال، سيكون الفرق بين 1 فبراير و1 مارس هو 0، وهو صحيح (استنادًا إلى تعريف شهر 30.4375 يومًا)؛ومع ذلك، فقد لا يكون صحيحًا لأغراضك الخاصة.

من الجيد أنك مهتم بذلك، لأنه لا يجب عليك استخدام أي من الفئات المصنفة في مساحة اسم VisualBasic.

تقدم مكتبة .net حلاً أفضل بكثير يسمى TimeSpan، استخدمه بالطريقة التالية:(dt1 وdt2 هما DateTimeس)

 TimeSpan ts = dt2 - dt1; //Or ts = dt1.Subtract(dt2)

بقدر ما أود المساعدة، أعتقد حقًا أن نظرة سريعة على الذكاء ستخبرك بالباقي (فقط اكتب هذا في Visual Studio، وأضف ts.)

يحرر لحساب الشهر الحقيقي: (y2 - y1) * 12 + m2 - m1, ، ما هي الصفقة الكبيرة؟

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