Je travaille sur un programme qui nécessite la date d'un événement pour être retourné. Je cherche un "Date", pas un "DateTime". Il doit y avoir un type de données qui retourne juste la date ... est là?Date vs DateTime
Répondre
Non, il n'y en a pas. DateTime
représente un point dans le temps qui est composé d'une date et d'une heure. Toutefois, vous pouvez récupérer la partie de date via la propriété Date
(qui est une autre DateTime
avec l'heure définie sur 00:00:00
).
Et vous pouvez récupérer des propriétés de date individuelles via Day
, Month
et Year
.
Vous pouvez renvoyer DateTime où la partie heure est 00:00:00 et simplement l'ignorer. Les dates sont traitées comme des entiers d'horodatage. Il est donc logique de combiner la date avec l'heure telle qu'elle est présente dans l'entier de toute façon.
Malheureusement, pas dans le .Net BCL. Les dates sont généralement représentées sous la forme d'un objet DateTime avec l'heure définie sur minuit.
Comme vous pouvez le deviner, cela signifie que vous avez tous les problèmes de fuseau horaire qui l'accompagnent, même si pour un objet Date, vous ne voulez absolument pas de gestion du fuseau horaire.
Vous pouvez essayer une des opérations suivantes:
DateTime.Now.ToLongDateString();
DateTime.Now.ToShortDateString();
Mais il n'y a pas de type "Date" dans la BCL.
Le type Date est juste un alias du type DateTime utilisé par VB.NET (comme int devient Integer). Ces deux types ont une propriété Date qui vous renvoie l'objet avec la partie heure définie sur 00:00:00.
True. [La page de document MSDN pour le type de date VB.NET] (http://msdn.microsoft.com/en-us/library/3eaydw6e.aspx) indique: * Le type correspondant dans le .NET Framework est le [System.DateTime] (http://msdn.microsoft.com/en-us/library/system.datetime.aspx) structure. * – miroxlav
Pour cela, vous devez utiliser la date, mais ignorer la valeur de l'heure.
Ordinairement une date serait un DateTime avec le temps de 00:00:00
Le type DateTime
a une propriété .Date
qui retourne la DateTime
avec la valeur de temps définie comme ci-dessus.
L'objet DateTime a une propriété qui retourne uniquement la partie date de la valeur.
public static void Main()
{
System.DateTime _Now = DateAndTime.Now;
Console.WriteLine("The Date and Time is " + _Now);
//will return the date and time
Console.WriteLine("The Date Only is " + _Now.Date);
//will return only the date
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
Cette réponse est incorrecte. La date renvoie un 'DateTime' avec l'heure définie sur 0:00:00 –
Créez une classe wrapper. Quelque chose comme ceci:
public class Date:IEquatable<Date>,IEquatable<DateTime>
{
public Date(DateTime date)
{
value = date.Date;
}
public bool Equals(Date other)
{
return other != null && value.Equals(other.value);
}
public bool Equals(DateTime other)
{
return value.Equals(other);
}
public override string ToString()
{
return value.ToString();
}
public static implicit operator DateTime(Date date)
{
return date.value;
}
public static explicit operator Date(DateTime dateTime)
{
return new Date(dateTime);
}
private DateTime value;
}
Et quel que soit de exposes value
que vous voulez.
implicite et explicite sont faux? – Behrooz
Je suggère que votre constructeur devrait définir le [DateTime.Kind] (http://msdn.microsoft.com/en-us/library/system.datetime.kind (v = vs.110) .aspx) à ' DateTimeKind.Unspecified' de sorte que lorsqu'il est sérialisé, il est désérialisé sans conversion (peut changer la date en fonction de différents fuseaux horaires). – OffHeGoes
@OffHeGoes Définissez DateTime.Kind sur 'DateTimeKind.Utc'. * Ne le définissez pas sur 'DateTimeKind.Unspecified' car cela garantit qu'il sera sérialisé/désérialisé avec un décalage de fuseau horaire inclus! Une date de calendrier est la même quel que soit le fuseau horaire, alors ne laissez pas le système l'ajuster. – Suncat2000
J'ai créé un simple Date struct pour les moments où vous avez besoin d'une date simple sans vous soucier de la partie de temps, des fuseaux horaires, local vs utc, etc.
Date today = Date.Today;
Date yesterday = Date.Today.AddDays(-1);
Date independenceDay = Date.Parse("2013-07-04");
independenceDay.ToLongString(); // "Thursday, July 4, 2013"
independenceDay.ToShortString(); // "7/4/2013"
independenceDay.ToString(); // "7/4/2013"
independenceDay.ToString("s"); // "2013-07-04"
int july = independenceDay.Month; // 7
Merci! C'est utile. – garfbradaz
Il n'y a pas Date
DataType.
Cependant, vous pouvez utiliser DateTime.Date
pour obtenir uniquement la date.
E.G.
DateTime date = DateTime.Now.Date;
Il existe une structure Date et les objets peuvent être déclarés en tant que type Date. –
@KalebAnderson pas dans l'implémentation par défaut .NET, il n'y a pas. Si vous parlez de la date VB.net, c'est toujours un DateTime. –
'DateTime.Now.Date' est identique à' DateTime.Today'. Il y a un 'DateTime.UtcNow' qui retourne la valeur date-heure en temps universel (UTC), mais il n'y a pas de méthode ou de propriété équivalente à UTC pour Today; 'DateTimeKind.UtcNow.Date' est l'expression appropriée. – Suncat2000
public class AsOfdates
{
public string DisplayDate { get; set; }
private DateTime TheDate;
public DateTime DateValue
{
get
{
return TheDate.Date;
}
set
{
TheDate = value;
}
}
}
Mettre des explications à votre réponse serait utile. – Guanxi
- 1. date d'extraction du datetime stamp
- 2. Comment convertir DateTime en Date
- 3. Remplacer la date dans un DateTime avec une autre date
- 4. Comment obtenir la partie date de datetime?
- 5. XSLT transformation datetime au format date
- 6. Comment obtenir la date du format datetime
- 7. Python, Convert 9 Date UTC tuple à MySQL format datetime
- 8. Création de DATETIME à partir de DATE et TIME
- 9. Comment diviser datetime en date et heure dans informatica
- 10. Transformer DateTime en simple Date dans Ruby on Rails
- 11. Obtenez seulement la partie Date de DateTime dans MSSQL
- 12. Comment interroger datetime en fonction de la date dans C#
- 13. Comparer une chaîne de date à datetime dans SQL Server?
- 14. Comment lancer DATETIME en tant que DATE dans mysql?
- 15. Comment entrer une valeur DateTime dans la fenêtre VS QuickWatch?
- 16. Conversion de datetime XML en datetime SQL
- 17. Datetime en java et mappage datetime par défaut en hibernation
- 18. IIS VS 2008/Web.config - format de date incorrect
- 19. Crystal Reports DateTime Formatage
- 20. DateTime Hex Format
- 21. Python, Django, datetime
- 22. Utilitaire DateTime pour ASP.net
- 23. datetime conversion C#
- 24. DateTime Format en C#
- 25. datetime strptime python joker
- 26. Comment convertir en datetime
- 27. Colonne XML typée avec l'élément DateTime - DateTime est convertie
- 28. Format WPF DateTime dans TextBlock?
- 29. Bind nullable DateTime à MaskedTextBox
- 30. champ datetime MySQL
Si vous utilisez une valeur DateTime comme une date, définissez le genre à UTC. Aucun ajustement de fuseau horaire à traiter. DateTime date = DateTime.SpecifyKind (DateTime.Today, DateTimeKind, Utc); – Suncat2000
Oui, je peux dire par expérience que l'utilisation de 'date' pour n'importe quoi est une mauvaise idée, sauf si vous êtes sûr à 100% que votre application ne fonctionnera que dans un seul fuseau horaire. Sauvegarder tout comme 'datetime' vous donne le meilleur des deux mondes, y compris le plus critique, un moyen facile d'éviter les cauchemars si les configs de fuseau horaire de votre serveur changent ... et commence à écrire des données de manière inattendue. 'Datetime' peut vous sauver là,' date' ne peut pas du tout, et deviendra difficile à résoudre si vous commencez à écrire 'date' avec le mauvais contexte de fuseau horaire. – Kelseydh