2012-11-08 5 views

Répondre

2

Le DateTime sera toujours a la partie date. Le TimeSpan est probablement ce dont vous avez besoin. Il peut garder les heures, minutes ... sans date.

EDIT: réaction à un commentaire incorrect

cartographie du temps suggérée à DateTime est tout simplement abstraction incorrecte. Alors votre propriété C# contient une date 01/01/0001 qui est erronée (non intentionnelle) et aussi la plupart sont traitées tout le temps que vous accédez à une telle propriété.

Alors que TimeSpan, peut montrer exactement ce que nous voulons: l'heure ellpased de la mi-nuit. Donc, si nous faisons la carte de l'heure à partir du type de DB, cela nous fournira une fonctionnalité prête à l'emploi: elle peut être chargée en temps, peut être stockée en tant que temps.

+0

Sauf que 'TimeSpan' représente une * durée * plutôt qu'une heure spécifique. Mauvaise abstraction. Les valeurs d'heure de la base de données correspondent à 'DateTime', avec la date définie sur 0001-01-01. –

+0

Ce n'est pas vrai. Si vous avez SQL Server 2008 type Time, vous devez le mapper à TimeStamp. Le DateTime dans ce cas contiendra la valeur par défaut, et ce n'est pas ce que nous voulons. Donc, comme un mappage des types SQL temps - C# a TimeStamp –

+0

@NicholasCarey L'équipe du framework .NET n'est pas d'accord avec vous sur votre idée d'abstraction. DateTime contient la propriété suivante (qui contredit un peu directement vous.): 'public TimeSpan TimeOfDay {get; } ' –

Questions connexes