2010-10-01 6 views
3

Comment puis-je "rogner" la valeur d'une propriété DateTime dans C#? Par exemple, lorsque je reçois une date, le format est "10/1/2010 00:00:00". Comment puis-je "rogner" 'Heure' 00:00:00 sans le convertir en Chaîne?C# DateTime, Ajustement sans conversion en chaîne

Étant donné que j'utilise une propriété de type DateTime pour manipuler cela, je n'ai pas besoin de convertir en chaîne.

Toute aide est appréciée.

+5

Votre question n'a pas de sens. Votre date aura toujours du temps, même si cela peut être 00:00:00. – Aliostad

+1

Le nom de la classe est Date + Heure. DateTime. Il n'y a pas de "temps nul" –

+0

Peut-être que vous n'expliquez pas le problème assez explicitement. Comme d'autres l'ont dit, la classe DateTime, par définition, aura TOUJOURS la portion Time. Si votre programme dépend du fait qu'il n'y a pas de temps, alors peut-être que quelque chose ne va pas avec le design .. Ou, vous ne faites rien ... –

Répondre

8
var dt = DateTime.Now; // 10/1/2010 10:44:24 AM 
var dateOnly = dt.Date; // 10/1/2010 12:00:00 AM 
+1

Et/ou dt.ToShortDateString(); quand vient le temps d'afficher –

+1

Cela ne répond pas à la question. Bien sûr, la question n'a pas de réponse car une DateTime a toujours un temps. –

+0

@Kevin Gale: Je ne suis pas d'accord. Je pense que cela rejoint l'intention du PO. Peut-être qu'il va clarifier la question ou commenter sur ce post. – codekaizen

2

Si vous demandez si l'objet DateTime peut être ignorant le temps, la réponse est non. Vous pouvez créer une classe de date définie par l'utilisateur qui renvoie uniquement la partie Date d'un objet DateTime. Si vous cherchez simplement à tronquer l'heure, voir ci-dessous.

DateTime now = DateTime.Now; 
DateTime today = now.Date; 

ou

DateTime now = DateTime.Now; 
DateTime today = new DateTime(now.Year, now.Month, now.Day); 
0

Tu ne peux pas prendre juste de l'objet DateTime puis .ToString() il?

DateTime current = DateTime.Now; 
string myTime = current.TimeOfDay.Tostring() 

Vous pouvez dépouiller les millisecondes de la fin ...

0

Cela ne peut être fait. Un horodatage a toujours une heure même si l'heure est 00:00:00

Vous ne pouvez supprimer cela que lors de la conversion en chaîne.

0

Comme mentionné par d'autres

var now = DateTime.Now; 
var today = now.Date; 

est la voie preffered. Cependant, depuis que j'aime les timtowtdi philosophi:

var now = DateTime.Now; 
var today = now.Add(-now.TimeOfDay); 
+0

* théoriquement * cela peut vous causer des ennuis à cause de la différence de temps entre vos deux déclarations :) –

+0

C'est de cette façon que j'affecte la variable en premier. Puisque DateTime est un Struct est maintenant une copie en lecture seule de la date actuelle et 'now.Add (-now.TimeOfDay)' remettra toujours la partie temps à 00: 00: 00' –

1

Vous pouvez couper une date Heures Minutes, Jour ..

DateTime t = DateTime.Now; 
DateTime t2 = t - new TimeSpan(t.Ticks % TimeSpan.TicksPerDay); 

Vous pouvez également utiliser TicksPerHour, TicksPerMinute et TicksPerSecond.