Последствия использования 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.Он не содержит древнего кода.

Другие советы

Одна из возможностей состоит в том, чтобы использовать интервал времени, как указано выше, но разделить на 30,4375 (среднее количество дней в месяце), игнорируя дробные месяцы.Это достаточно близко к тому, над чем я сейчас работаю, но может быть недостаточно точным, исходя из ваших потребностей.Например, разница между 1 февраля и 1 марта будет равна 0, что (на основе определения месяца с числом дней 30.4375) является правильным;однако это может быть неверно для ваших конкретных целей.

Хорошо, что вас это беспокоит, потому что вы не должны использовать ни один из классов в пространстве имен VisualBasic.

Библиотека .net предлагает гораздо лучшее решение под названием TimeSpan, используйте его следующим образом:(dt1 и dt2 являются DateTimes)

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

Что касается того, насколько я хотел бы помочь, я действительно думаю, что беглый взгляд на intellisence расскажет вам остальное (просто напишите это в Visual Studio и добавьте ts.)

Редактировать для реального подсчета месяцев: (y2 - y1) * 12 + m2 - m1, что такого особенного?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top