web-dev-qa-db-fra.com

C #: quel est le moyen le plus facile de soustraire du temps?

J'essaie de mettre au point un outil qui m'aidera à établir des horaires de travail. Quel est le moyen le plus simple de résoudre les problèmes suivants?

8h00 + 5 heures = 13h00

et

17h00 - 2 heures = 15h00

et

17h30 -: 45 = 4:45

etc. 

25
Sinaesthetic

Celles-ci peuvent toutes être effectuées avec DateTime.Add(TimeSpan) car elles prennent en charge des périodes de temps 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));

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

49
Steve Townsend

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

Add Renvoie un nouveau DateTime qui ajoute la valeur du TimeSpan spécifié à 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 spécifié d'heures à 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 spécifié de mois à 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 de ticks spécifié à la valeur de cette instance.

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

21
DJ Quimby

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;

Pour soustraire une année:

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

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

6
Fadrian Sudaman

Bonjour, si vous ne soustrayez que la valeur entière de DateTime, vous devez écrire du code comme celui-ci.

DateTime.Now.AddHours(-2)

Ici, je soustrais 2 heures à la date et à l'heure actuelles

0
Zack

essaye ça

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());

        }
    }
}
0
user1401491