Implicações na utilização VB.NET método DateAndTime.DateDiff com C #
-
05-07-2019 - |
Pergunta
Estou construindo uma nova aplicação web ASP.NET com base em um legado um (ASP clássico). As pessoas, que constroem este código 4, 5 anos atrás, usei um monte de funções do VBScript como DateDiff.
Atualmente estou trabalhando em um simulador que faz um monte de cálculos com datas. E eu estou recebendo uma diferença irritante entre essas datas porque eu não tenho uma forma facilmente para obter a diferença entre os meses no c # como fizeram em VB 6.
Então, eu escolher o caminho de usar o DateAndTime.DateDiff de Microsoft.VisualBasic namespace na minha aplicação web ASP.NET.
Vocês saber se existem algumas implicações sobre isso? Estou um pouco preocupado com esta abordagem.
Cheers,
Solução
A única implicação é que você está adicionando outra montagem para sua implantação e usando a funcionalidade que muitos desenvolvedores C # (outras pessoas que podem precisar de manter seu código) não estão conscientes. Mas pessoalmente eu não acho que há muito de errado com ele. A documentação MSDN Library é tipicamente boa, e você também pode adicionar alguns comentários se você quiser explicar por que o seu usá-lo.
Edit: Eu também quero nota que Microsoft.VisualBasic foi implementado a partir do zero para .NET. Ele não contém código antigo.
Outras dicas
Uma possibilidade é usar o TimeSpan como Itay indicado, mas dividir por 30.4375 (a média de dias por mês), ignorando meses fracionários. Esta é perto o suficiente para que as coisas que eu estou trabalhando atualmente, mas pode não ser suficiente precisas com base em suas necessidades. Por exemplo, a diferença entre 1 de Fevereiro e 1 de Março seria 0, que (com base em uma definição mês 30,4375 dias) está correta; pode não ser correto para seus fins particulares, no entanto.
É bom que você está preocupado com isso, porque você não deve usar qualquer um dos classificados no namespace VisualBasic.
A oferta biblioteca .net uma solução muito melhor chamado TimeSpan, usá-lo da seguinte maneira: (DT1 e DT2 são DateTime
s)
TimeSpan ts = dt2 - dt1; //Or ts = dt1.Subtract(dt2)
Tanto quanto eu gostaria de ajuda, eu realmente acho que uma rápida olhada na intellisence irá dizer-lhe o resto (apenas escrever isso no Visual Studio, e adicionar ts.
)
Editar para contagem mês real:? (y2 - y1) * 12 + m2 - m1
, que o grande negócio