2010-10-22 21 views

Répondre

42

Tout cela peut être fait avec DateTime.Add(TimeSpan) car il prend en charge les périodes positives et négatives.

DateTime original = new DateTime(year, month, day, 8, 0, 0); 
DateTime updated = original.Add(new TimeSpan(5,0,0)); 

DateTime original = new DateTime(year, month, day, 17, 0, 0); 
DateTime updated = original.Add(new TimeSpan(-2,0,0)); 

DateTime original = new DateTime(year, month, day, 17, 30, 0); 
DateTime updated = original.Add(new TimeSpan(0,45,0)); 

Ou vous pouvez également utiliser la méthode DateTime.Subtract(TimeSpan) de manière analogue.

+0

ok alors où est-ce que je vais faux. J'ai ajouté un datetimepicker et assigné sa valeur à une variable datetime. maintenant les méthodes mathématiques ne s'affichent pas – Sinaesthetic

+0

@Sinaesthetic - probablement utile d'afficher du code, c'est une question légèrement différente de l'arithmétique date-heure –

+0

@Sinaesthetic Lorsque vous utilisez un DateTimePicker, gardez à l'esprit qu'il peut afficher _either_ date _ou_heure- de jour, mais conserve une valeur composée de * both * ... si vous utilisez la propriété Value, vous devrez peut-être soustraire l'un ou l'autre composant en premier. – Ian

17

Découvrez toutes les méthodes DateTime ici: http://msdn.microsoft.com/en-us/library/system.datetime.aspx

Add Renvoie une nouvelle DateTime qui ajoute la valeur de la TimeSpan spécifiée à la valeur de cette instance.

AddDays Renvoie un nouveau DateTime qui ajoute le nombre de jours spécifié à la valeur de cette instance.

AddHours Renvoie un nouveau DateTime qui ajoute le nombre d'heures spécifié à la valeur de cette instance.

AddMilliseconds Renvoie un nouveau DateTime qui ajoute le nombre spécifié de millisecondes à la valeur de cette instance.

AddMinutes Renvoie un nouveau DateTime qui ajoute le nombre de minutes spécifié à la valeur de cette instance.

AddMonths Renvoie un nouveau DateTime qui ajoute le nombre de mois spécifié à la valeur de cette instance.

AddSeconds Renvoie un nouveau DateTime qui ajoute le nombre de secondes spécifié à la valeur de cette instance.

AddTicks Renvoie un nouveau DateTime qui ajoute le nombre spécifié de graduations à la valeur de cette instance.

AddYears Renvoie un nouveau DateTime qui ajoute le nombre d'années à la valeur de cette instance.

+0

Pour tous ceux qui viennent sur ceci: Vous pouvez utiliser ces fonctions ci-dessus et utiliser une valeur négative pour soustraire, tant que l'instance n'a pas été initialisée à DateTime.MinValue – Kimmax

6

Utilisez l'objet TimeSpan pour capturer votre élément de temps initial et utiliser les méthodes telles que AddHours ou AddMinutes. Pour soustraire 3 heures, vous ferez AddHours(-3).Pour soustrayez 45 minutes, vous ferez AddMinutes(-45)

+0

'Utiliser l'objet TimeSpan pour capturer votre élément de temps initial' - voulez-vous dire 'DateTime'? – Rawling

+0

Je fais référence à System.TimeSpan type –

+1

Mais le temps initial est un instant, par ex. 20h00 au lieu d'un intervalle de temps, par ex. 45 minutes. (Excuses aussi, je viens de réaliser à quel point c'est un post.) – Rawling

7

Cela fonctionne aussi:

System.DateTime dTime = DateTime.Now(); 

// tSpan is 0 days, 1 hours, 30 minutes and 0 second. 
System.TimeSpan tSpan = new System.TimeSpan(0, 1, 3, 0); 

System.DateTime result = dTime + tSpan; 

Soustraire un an:

DateTime DateEnd = DateTime.Now; 
DateTime DateStart = DateEnd - new TimeSpan(365, 0, 0, 0); 
0

essayer

namespace dateandtime 
{ 

    class DatesTime 
    { 

     public static DateTime Substract(DateTime now, int hours,int minutes,int seconds) 
     { 
      TimeSpan T1 = new TimeSpan(hours, minutes, seconds); 
      return now.Subtract(T1); 
     } 


     static void Main(string[] args) 
     { 
      Console.WriteLine(Substract(DateTime.Now, 36, 0, 0).ToString()); 

     } 
    } 
}