80 votes

Rejoindre la date et l'heure de la date en C#

Je récupère des données d'une iSeries où il y a des champs de date et d'heure séparés. Je veux les rejoindre dans un champ DateTime de mon projet C#. Je ne vois pas comment ajouter juste une heure à un champ DateTime. Comment suggéreriez-vous d'y parvenir ?

119voto

David M Points 45808

Vous pouvez le faire assez facilement :

DateTime dateOnly;
DateTime timeOnly;
...
DateTime combined = dateOnly.Date.Add(timeOnly.TimeOfDay);

TimeOfDay renvoie un TimeSpan, que vous ajoutez ensuite à la date.

Modifier (grâce aux commentateurs ci-dessous) - pour être sûr, utilisez dateOnly.Date pour assurer la partie date uniquement.

85voto

Adam Robinson Points 88472

Comment sont-ils stockés ? En supposant que la partie de date est stockée en tant que DateTime de minuit du jour en question et que l'heure est un TimeSpan, vous pouvez simplement les ajouter.

DateTime date = ...;
TimeSpan time = ...;

DateTime result = date + time;

8voto

Reed Copsey Points 315315

Vous pouvez facilement construire un TimeSpan à partir de votre champ "time".

Une fois que vous avez ça, faites juste :

TimeSpan time = GetTimeFieldData();
dateField = dateField.Add(time);

4voto

Mark Dykun Points 31
Datetime date = new DateTime(Date1.Year, Date1.Month, Date1.Day, Time1.Hour, Time1.Minute, Time1.Second); 

2voto

Seattle Leonard Points 2395

Vous pouvez ajouter un TimeSpan un DateTime et écrire quelque chose comme ça.

// inside consuming function
ISeriesObject obj = getMyObject();
DateTime dt = getDate(obj) + getTime(obj);

private DateTime getDate(ISeriesObject obj)
{
     //return a DateTime
}


private TimeSpan getTime(ISeriesObject obj)
{
     //return a TimeSpan
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X