2010-09-28 14 views
3

J'ai une date dans le futur, par ex. 13/10/2008 J'ai besoin de soustraire la date actuelle (aujourd'hui c'est le 28/09/2010) moins 7 jours, donc c'est 21/09/2010 moins 13/10/2008, ce qui équivaudrait à erm, 720 quelque chose?VB.Net 2005, comment puis-je soustraire une date à partir de (date actuelle moins 7 jours) et produire un nombre de jours?

Mais la date actuelle ne sera pas toujours le 28/09/2010, évidemment.

J'ai besoin du code pour cela.

EDIT: Quand je l'ai dit l'avenir que je veux dire :) passé

Répondre

5
Sub Main() 
    Dim dt As DateTime = New DateTime(2008, 10, 13) 
    ' be careful what you are subtracting from what 
    ' the date you have is not in the future (year 2008) 
    ' if the date is in the future: (dt.Subtract(DateTime.Now.AddDays(-7))).TotalDays 
    ' or simply take the absolute value 
    Dim days As Double = (DateTime.Now.AddDays(-7).Subtract(dt)).TotalDays 
    Console.WriteLine(days) 
End Sub 

Vous remarquerez également que la propriété TotalDays est de type Double.

+0

Erreur opérateur '-' est pas défini pour les types de Date »et 'objet'. – Jules

+0

Désolé, je ne vous ai pas vu utiliser VS2005 qui ne supporte pas l'inférence de type variable. S'il vous plaît voir ma mise à jour. Les types doivent être spécifiés lors de la déclaration des variables. –

+0

Toujours la même erreur avec votre code modifié Erreur 1 L'opérateur '-' n'est pas défini pour les types 'Date' et 'Objet'. – Jules

1

13/10/2008 est pas exactement à l'avenir :)

Désolé pour l'utilisation du code C#, mais:

(dateInFuture - DateTime.Now.AddDays(-7)).TotalDays 

devrait fonctionner. Bien sûr, l'inverse si vous voulez dire dans le passé:

(DateTime.Now.AddDays(-7) - dateInPast).TotalDays 
+0

Hmmm, avoir du mal à convertir cela en vb http://www.developerfusion.com/tools/convert/csharp-to-vb/ – Jules

0

«J'ai besoin du code pour cela » semble un peu trop comme « Plz donner meh Teh codez » et votre « date dans le futur » semble un peu dans le passé.

Quoi qu'il en soit, vous devriez étudier les méthodes pertinentes de la structure DateTime, en particulier la méthode Subtract (les deux surcharges, ou en remplacement de son opérateur de soustraction), et vous devriez jeter un oeil à la structure de trop TimeSpan.

Vous pouvez créer un DateTime pour la date d'aujourd'hui, il faut soustraire un TimeSpan de 7 jours pour, puis soustraire ce résultat à un DateTime représentant votre date à l'avenir (ou, si elle est dans le passé, faire la contraire). Vous aurez un TimeSpan représentant la différence de temps entre les deux dates, à partir de laquelle vous pouvez facilement obtenir le nombre de jours en utilisant sa propriété Days. Comme d'autres, pour faire la première soustraction, vous pouvez également utiliser la méthode AddDays de la structure DateTime.

+0

Il n'y aurait pas besoin de sites comme ça du tout si toutes les réponses aux questions étaient google et savoir, lol – Jules

+0

Apprendre à programmer, c'est apprendre à assembler les briques. Fournir une réponse prête à l'emploi est logique pour les problèmes compliqués, mais quand tout le problème est de "me trouver un appel dans la bibliothèque qui fait ce que je veux" la meilleure réponse pour moi est de pointer doucement vers la documentation.Notez que je n'ai pas dit "juste google", je vous ai fourni quelques pointeurs vers les sections pertinentes du MSDN, donc à l'avenir, vous serez en mesure de résoudre ce genre de petits problèmes par vous-même. Et gardez à l'esprit que j'aurais passé moins de temps à vous fournir du codez, mais cela vous servirait à vous maquiller - inutile tout au plus. –

1
 Dim ValidDate As Date =cDate("Tuesday, December 31, 2013") 'A date in Future 

     Dim date1 As New System.DateTime(ValidDate.Year, ValidDate.Month, ValidDate.Day) 
     Dim date2 = Now 

     Dim Diff1 As System.TimeSpan 

     Diff1 = date1.Subtract(date2) 

     Dim TotRemDays = (Int(Diff1.TotalDays)) 

     MsgBox(TotRemDays)