Domanda

Sto costruendo una nuova applicazione Web ASP.NET basata su una legacy (ASP classico). Le persone, che hanno costruito questo codice 4, 5 anni fa, hanno usato molte funzioni VBScript come DateDiff.

Attualmente sto lavorando a un simulatore che esegue molti calcoli con le date. E sto ottenendo una fastidiosa differenza tra queste date perché non ho un modo semplice per ottenere la differenza tra mesi in c # come hanno fatto in VB 6.

Quindi, scelgo il percorso di utilizzo di DateAndTime.DateDiff dallo spazio dei nomi Microsoft.VisualBasic sulla mia applicazione Web ASP.NET.

Ragazzi sapete se ci sono delle implicazioni al riguardo? Sono un po 'preoccupato per questo approccio.

Saluti,

È stato utile?

Soluzione

L'unica conseguenza è che stai aggiungendo un altro assembly alla tua distribuzione e usando funzionalità di cui molti sviluppatori C # (altre persone che potrebbero aver bisogno di mantenere il tuo codice) non sono a conoscenza. Ma personalmente non penso che ci sia molto di sbagliato in questo. La documentazione della libreria MSDN è in genere buona e puoi anche aggiungere alcuni commenti se vuoi spiegare perché lo stai usando.

Modifica: voglio anche notare che Microsoft.VisualBasic è stato implementato da zero per .NET. Non contiene codice antico.

Altri suggerimenti

Una possibilità è usare TimeSpan come indicato da Itay, ma dividere per 30.4375 (i giorni medi al mese), ignorando i mesi frazionari. Questo è abbastanza vicino per le cose su cui sto attualmente lavorando, ma potrebbe non essere abbastanza preciso in base alle tue esigenze. Ad esempio, la differenza tra 1 febbraio e 1 marzo sarebbe 0, che (sulla base di una definizione del mese di 30.4375 giorni) è corretta; potrebbe non essere corretto per i tuoi scopi particolari, tuttavia.

È una cosa positiva di cui ti preoccupi, perché non dovresti usare nessuno dei classificati nello spazio dei nomi VisualBasic.

La libreria .net offre una soluzione molto migliore chiamata TimeSpan, usala nel modo seguente: (dt1 e dt2 sono DateTime s)

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

Per quanto mi piacerebbe aiutare, penso davvero che una rapida occhiata all'intelligenza ti dirà il resto (basta scrivere questo in Visual Studio e aggiungere ts. )

MODIFICA per il conteggio dei mesi reali: (y2 - y1) * 12 + m2 - m1 , qual è il grosso problema?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top