Ho un oggetto DateTime che può o non può contenere già alcune informazioni sulla data/ora. Con quello ho bisogno di sostituire il tempo con il mio nuovo tempo indipendentemente dalla data e viceversa. Come potrei ottenere questo? Non riesco a vedere nulla di ovvio tranne la creazione di due nuovi oggetti DateTime, uno con la vecchia/nuova data e uno con la vecchia/nuova ora e la concatenazione. Ci deve sicuramente essere un modo migliore di questo?Sostituire una sezione Data o Ora in un oggetto DateTime in C#
risposta
vorrei scrivere due o tre metodi di estensione:
public static DateTime WithTime(this DateTime date, TimeSpan time)
{
return date.Date + time;
}
public static DateTime WithDate(this DateTime original, DateTime newDate)
{
return newDate.WithTime(original);
}
public static DateTime WithTime(this DateTime original, DateTime newTime)
{
return original.Date + newTime.TimeOfDay;
}
(che davvero non hanno bisogno sia del secondo metodi, ma di tanto in tanto potrebbe essere più semplice se stai concatenamento insieme un sacco di chiamate.)
si noti che non si sta creando alcun oggetti in termini di voci sul mucchio, come DateTime
è una struct.
DateTime è una struttura immutabile.
L'unica opzione è creare una nuova struttura DateTime in base ai due valori esistenti. Questo è l'approccio migliore. Per fortuna, si tratta di un uno di linea:
DateTime CreateNewDateTime(DateTime date, DateTime time)
{
return new DateTime(date.Year, date.Month, date.Day, time.Hour, time.Minute, time.Second);
}
Questo potrebbe non essere esattamente quello che stai cercando, ma la classe DateTime ha una serie di metodi Aggiungi (AddMinutes(), AddDays(), ecc.). Dico questo potrebbe non essere quello che stai cercando, perché questi restituiscono un DateTime, in modo che avrebbe dovuto fare qualcosa di simile
myDate = myDate.AddMinutes(60);
Striscia il tempo da un datetime esistente scrivendo .Data
DateTime new = oldDate.Date;
Aggiungi il tuo momento da ciascuna aggiungendo le ore, i minuti & secondi individualmente
DateTime new = oldDate.Date.AddHours(14).AddMinutes(12).AddSeconds(33);
o tutti in una volta
DateTime new = oldDate.Date.AddSeconds(51153);
o aggiungendo un periodo()
DateTime new = oldDate.Date.Add(new TimeSpan(14,12,33));
- 1. Ottenere data o ora solo da un oggetto DateTime
- 2. Creazione di data/ora in C#
- 3. Come convertire una stringa di data in un oggetto DateTime?
- 4. Limite intervallo data/ora in C#
- 5. Memorizzazione di una data breve in un oggetto DateTime
- 6. Conversione di una stringa data/ora UTC in C#
- 7. Combinando (concatenare) data e ora in un datetime
- 8. Converti stringa in data/ora utilizzando C#
- 9. Registrazione data e ora Data e ora C#
- 10. Combina colonna data e ora in colonna datetime
- 11. Come analizzare una data/ora RFC 2822 in un datetime Python?
- 12. Come analizzare una stringa in un oggetto DateTime in Perl?
- 13. Modifica datetime in data e ora Unix in Python
- 14. Data e ora C++
- 15. Impostare un oggetto data Java da un oggetto DateTime Notes
- 16. Ottieni AM/PM per una data ora in minuscolo utilizzando solo un formato datetime
- 17. ActiveRecord analizza la stringa in data/ora?
- 18. Esiste una classe data/ora standard in C++?
- 19. Conversione di data/ora UTC in data e ora locali dell'utente
- 20. Campi data/ora in django
- 21. come convertire una stringa datetime in oggetto datetime?
- 22. moment.js - visualizza data O ora
- 23. Converti in oggetto datetime
- 24. Data MySQL o ora PHP?
- 25. Come convertire una data SQL in un DateTime?
- 26. Data e ora in php e mongodb
- 27. Inserire data e ora in Mysql
- 28. Come posso analizzare una stringa di data araba Umm Al-Qura in un oggetto DateTime .NET?
- 29. come convertire un oggetto timedelta in un oggetto datetime
- 30. Analisi di informazioni di una data JSON in un C# DateTime