Supprimer heures: secondes: millisecondes dans L'objet DateTime
j'essaie de créer une chaîne à partir de L'objet DateTime qui donne le format mm:dd:yyyy
.
Conventionnellement DateTime
vient mm:dd:yyyy hrs:min:sec AM/PM
.
Est-il un moyen d'enlever rapidement les hrs:min:sec AM/PM
partie du DateTime de sorte que lorsque je le convertit ToString()
il ne fait qu' mm:dd:yyyy
?
9 réponses
pour répondre À votre question, vous devez le stocker dans un type différent. Le choix le plus simple est d'utiliser une chaîne de caractères.
string date = dateTime.ToString("MM:dd:yyyy");
cependant, je vous conseille fortement de ne pas stocker les dates en interne dans votre programme sous forme de chaînes. Ce sera difficile de faire des calculs ou des comparaisons sur eux. En outre, je vous conseille de ne pas forcer une culture spécifique pour votre représentation de date car cela signifie que votre application ne fonctionnera probablement pas comme prévu dans d'autres cultures que la vôtre.
une approche un peu plus sophistiquée est de créer une classe personnalisée qui remplace ToString. J'éviterais aussi cela, parce qu'il sera toujours difficile d'utiliser votre type avec les fonctions de la bibliothèque standard. Vous devrez vous convertir tout le temps.
il suffit de le laisser comme DateTime et de faire la conversion en chaîne uniquement dans la couche de présentation. Vous pouvez utiliser DateTime.ToShortDateString
pour imprimer une chaîne conviviale tenant compte de la culture.
datetime DateWithTimeNoSeconds =
DateTime.Now.Date.AddHours(DateTime.Now.Hour).AddMinutes(DateTime.Now.Minute);
cela obtient la date actuelle & la date de l'heure et ajoute des heures et des minutes.
DateTime date1 = new DateTime(2008, 6, 1, 7, 47, 0);
Console.WriteLine(date1.ToString());
// Get date-only portion of date, without its time.
DateTime dateOnly = date1.Date;
// Display date using short date string.
Console.WriteLine(dateOnly.ToString("d"));
// Display date using 24-hour clock.
Console.WriteLine(dateOnly.ToString("g"));
Console.WriteLine(dateOnly.ToString("MM/dd/yyyy HH:mm"));
// The example displays the following output to the console:
// 6/1/2008 7:47:00 AM
// 6/1/2008
// 6/1/2008 12:00 AM
// 06/01/2008 00:00
http://msdn.microsoft.com/en-us/library/system.datetime.date.aspx
habituellement, j'utilise DateTime.ToShortDateString () convertir en un Culture
- connaissance d'une chaîne de caractères.
de cette façon, vous pouvez le formater à ce jour en respectant seulement le formatage courant de la culture mis au fil courant.
alors que dans la plupart des cas je suis d'accord avec Mark Byers, j'ai eu une situation où j'ai dû stocker une date heure qui était seulement granulaire à l'heure. Stocker des minutes et des secondes serait non seulement superflu, mais également inexact. L'utilisateur sélectionnait simplement une date et une heure, de sorte que pendant que la date et l'heure étaient sélectionnées par l'utilisateur, les minutes et les secondes étaient réglées à n'importe quelle heure actuelle.
Supprimer minutes et secondes est très facile dans ce cas. Ici, c'est le code:
scheduledDate = scheduledDate.AddMinutes(
scheduledDate.Minute * -1).AddSeconds(
scheduledDate.Second * -1);
puis je le stocke dans le DB comme un temps plein de date, avec des minutes et des secondes toujours 0.
DateTime.AddMinutes
(ou secondes ou heures) si vous voulez supprimer au lieu d'ajouter juste ajouter un nombre négatif!
moyen Facile, sans doute pas le meilleur, mais
DateTime dt = new DateTime();
dt = DateTime.Now;
string sdate = dt.ToShortDateString();
dt = DateTime.Parse(sdate);
ou pour faire court
var dt = DateTime.Parse(DateTime.Now.ToShortDateString());
Si vous souhaitez supprimer des heures, secondes, millisecondes (retirer remise à 0) à partir d'un DateTime
objet sans conversion en chaîne, vous pouvez utiliser le Date
propriété.
// Get date-only portion of date, without its time.
var date = DateTime.Now.Date;
l'exemple ci-dessous utilise la propriété Date pour extraire la composante date d'une valeur DateTime avec sa composante temps réglée à zéro (ou 0:00:00, ou minuit).
quelque Chose comme ça pour la date et l'heure sans les secondes:
private DateTime _startTime;
public DateTime StartTime
{
get { return _startTime; }
set
{
_startTime = value.AddSeconds(-value.Second)
.AddMilliseconds(-value.Millisecond);
}
}