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,

Foi útil?

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 DateTimes)

 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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top