2010-11-30 14 views
5

Comment est-ce que je sauverais l'heure de la date, sans temps ou de préférence avec un horodatage de 12:00, peu importe le temps à ce moment-là? Je ne veux pas utiliser .ToString("dd/MM/yyyy");, car il va ouvrir beaucoup de nouvelles erreurs possibles.Comment enregistrer la date et l'heure sans heure?

+1

Où voulez-vous sauver la date? Dans la base de données? ou objet de type Datetime class? – Shekhar

+0

Vers la base de données. – Willem

+0

Le temps peut être soit effacé dans le code, la couche de persistance ou la base de données, quel endroit semble le plus naturel pour le problème que vous essayez de résoudre? –

Répondre

14

struct DateTime a une propriété Date qui devrait répondre à vos besoins:

DateTime dateOnly = dateTime.Date; 

Bien sûr, il y aura inévitablement contiennent encore une partie de temps, mais vous devriez être en mesure de l'ignorer.

+0

Merci. '.Date' a produit le bon horodatage. =) – Willem

+0

mais cela risque de devenir incorrect. Par exemple, si vous passez de GMT à BST et que minuit passe à 23h00 le jour précédent, la partie Date a été modifiée. – Sam

1

Utilisez

DateTime.Now.Date 

ou pour myDate:

myDate.Date 
+1

FYI, 'DateTime.Today' est un raccourci utile pour' DateTime.Now.Date' – Jon

1

Si vous avez une date

DateTime anyDate = DateTime.Now; 
DateTime dateAtNoon = anyDate.Date.AddHours(12); 

ou si vous voulez aujourd'hui, vous pouvez utiliser le raccourci

DateTime dateAtNoon = DateTime.Today.AddHours(12); 
1

Cela fera l'affaire avec une préférence à ts.Date

var ts = DateTime.Now; 
var dateAtMidnight = ts.Date; 
var dateAtNoon = ts.Date.AddHours(12); 
+0

Je suis assez sûr que par défaut une nouvelle date sans heure sera par défaut à 00h00. Est-ce différent de ce que vous proposiez? –

+0

Correct. Je trouve juste faux de le par défaut à 12 P.M et Willem n'a pas précisé. S'il vit en Europe, 12:00 signifie 12:00 – VdesmedT

2

Comme d'autres ont dit

DateTime.Now.Date 

est le chemin à parcourir. Cependant, il est également intéressant de savoir si vous souhaitez supprimer les informations de fuseau horaire pour éviter les problèmes sur différents TZ sur les machines client \ serveur.

Vous pouvez utiliser

var dateTime = new DateTime(DateTime.Now.Date.Ticks, DateTimeKind.Unspecified);