Последствия использования метода VB.NET DateAndTime.DateDiff с C#

Я создаю новое веб-приложение ASP.NET на основе устаревшего (классического ASP). Люди, которые создавали этот код 4, 5 лет назад, использовали множество функций VBScript, таких как DateDiff.

В настоящее время я работаю над симулятором, который выполняет много вычислений с датами. И я получаю раздражающую разницу между этими датами, потому что у меня нет простого способа получить разницу между месяцами в С#, как это было в VB 6.

Итак, я выбираю путь использования пространства имен DateAndTime.DateDiff из пространства имен Microsoft.VisualBasic в своем веб-приложении ASP.NET.

Вы, ребята, знаете, есть ли какие-то последствия для этого? Меня немного беспокоит такой подход.

Ваше здоровье,


person Daniel    schedule 21.10.2009    source источник


Ответы (3)


Единственным следствием этого является то, что вы добавляете еще одну сборку в свое развертывание и используете функциональные возможности, о которых не знают многие разработчики C# (другие люди, которым может потребоваться сопровождение вашего кода). Но лично я не думаю, что в этом есть что-то плохое. Документация библиотеки MSDN, как правило, хороша, и вы также можете добавить несколько комментариев, если хотите объяснить, почему вы ее используете.

Изменить: я также хочу отметить, что Microsoft.VisualBasic был реализован с нуля для .NET. Он не содержит древнего кода.

person G-Wiz    schedule 21.10.2009
comment
Мы объявили библиотеку Microsoft.VisualBasic вне закона только для того, чтобы заставить пережитки соответствовать новым библиотекам .Net. - person Joel Etherton; 20.01.2010
comment
Библиотека содержит эффективный полезный код. Это такая же библиотека, как и любая другая, и она больше вдохновлена ​​Visual Basic, чем чем-либо еще. Зачем создавать, тестировать, поддерживать и версии своих собственных реализаций, если они уже существуют? - person G-Wiz; 20.01.2010
comment
Я также согласен с комментарием gWiz, сделанным ранее в этом году; Я думаю, что пространство имен/сборка Microsoft.VisualBasic — это замечательная вещь, помогающая облегчить/ускорить быструю миграцию/перенос классических приложений ASP/VBScript в .NET без необходимости переписывать что-то по-новому каждый раз, когда вы сталкиваетесь с ними... - person Funka; 07.10.2010

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

person Ken White    schedule 21.10.2009

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

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

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

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

ИЗМЕНИТЬ для реального подсчета месяцев: (y2 - y1) * 12 + m2 - m1, что такого особенного?

person Letterman    schedule 21.10.2009
comment
Хорошо, но как это обработать месяцы с 31 днем ​​или февраль (как в високосный, так и не в високосный год)? - person Ken White; 21.10.2009
comment
Да... это была проблема, с которой я столкнулся... Результаты немного другие - person Daniel; 21.10.2009
comment
вы не должны использовать какие-либо классы в пространстве имен VisualBasic - почему бы и нет? - person AakashM; 21.10.2009
comment
вам не следует использовать пространство имен VisualBasic, потому что оно устарело. и если вы имели в виду такой счет месяцев, просто: (y2 - y1) * 12 + m2 - m1 - person Letterman; 23.10.2009
comment
Может ли кто-нибудь подтвердить или предоставить ссылки (ссылки) на то, действительно ли пространство имен Microsoft.VisualBasic считается устаревшим? Этот ответ stackoverflow.com/questions/226517/, кажется, предлагает «Нет». (Но он старше, чем этот уже однолетний комментарий, поэтому может быть устаревшим?.) - person Funka; 07.10.2010