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?

13
demandé sur Cœur 2010-12-11 11:03:29

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.

11
répondu Mark Byers 2010-12-11 08:13:11
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.

9
répondu Dave 2013-03-13 06:47:04
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

8
répondu Gopi 2010-12-11 08:09:14

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.

7
répondu Uwe Keim 2010-12-11 08:15:01

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.

6
répondu user2113657 2014-11-19 03:17:55

DateTime.AddMinutes (ou secondes ou heures) si vous voulez supprimer au lieu d'ajouter juste ajouter un nombre négatif!

2
répondu lunarnet76 2013-03-13 06:47:25

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());
1
répondu Riaan Hayes 2018-05-30 12:50:05

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).

msdn

1
répondu aloisdg 2018-05-30 12:58:25

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);   
    }
}
0
répondu khablander 2017-01-07 01:48:49