2010-05-18 7 views
4

Si j'ai un horodatage sous la forme: aaaa-mm-jj hh: mm: ss: mmmC# Obtenir juste Date à partir Timestamp

Comment puis-je extraire seulement la date de l'horodatage? Par exemple, si un horodatage indique: "2010-05-18 08: 36: 52: 236", quel est le meilleur moyen d'obtenir le 2010-05-18 à partir de celui-ci. Ce que j'essaie de faire est d'isoler la partie date de l'horodatage, de définir une heure personnalisée pour créer un nouvel horodatage. Existe-t-il un moyen plus efficace de définir l'heure de l'horodatage sans d'abord supprimer la date, puis ajouter une nouvelle heure?

+0

Vous avez besoin d'une représentation sous forme de chaîne de la date de la suppression de la partie de temps? –

Répondre

9

DateTime.Parse ("2010-05-18 08: 36: 52: 236"). ToString ("aaaa-MM-jj");

+0

Avez-vous eu l'occasion de lire la deuxième partie de ma question? S'il y a un moyen préféré de le faire, j'aimerais vraiment le savoir. Sinon, ce que vous avez écrit ici semble légitime, merci. – sooprise

+0

Eh bien, que voulez-vous dire par «plus efficace»? Si vous le voulez plus rapidement, vous pouvez comparer différentes méthodes avec un profileur? Je pense que la méthode proposée par Andomar sera plus rapide? (La sous-chaîne) –

+0

Donne une exception 'Chaîne n'a pas été reconnue comme une DateTime.' valide sur ma machine – Andomar

2

Vous pouvez utiliser substring:

"2010-05-18 08:36:52:236".Substring(0, 10); 

Ou utilisez ParseExact:

DateTime.ParseExact("2010-05-18 08:36:52:236", 
        "yyyy-MM-dd HH:mm:ss:fff", 
        CultureInfo.InvariantCulture) 
     .ToString("yyyy-MM-dd"); 
+0

+1 pour ParceExact – fishhead

7

Vous devez utiliser le type DateTime:

DateTime original = DateTime.Parse(str); 
DateTime modified = original.Date + new TimeSpan(13, 15, 00); 
string str = modified.ToString("yyyy-MM-dd HH:mm:ss:fff"); 

Votre format est non-standard, de sorte que vous Il faut appeler ParseExact au lieu de Parse:

DateTime original = DateTime.ParseExact(str, "yyyy-MM-dd HH:mm:ss:fff", CultureInfo.InvariantCulture); 
1

Obtenez le membre .Date sur le DateTime

DateTime date = DateTime.Now; 
DateTime midnightDate = date.Date; 
2
DateTime date; 
if (DateTime.TryParse(dateString, out date)) 
{ 
    date = date.Date; // Get's the date-only component. 
    // Do something cool. 
} 
else 
{ 
    // Flip out because you didn't get a real date. 
} 
0

utiliser comme ceci:

var x = DateTime.Now.Date; //will give you midnight today 

x.AddDays(1).AddTicks(-1); //use these method calls to modify the date to whats needed. 
+0

DateTime est immuable. Vous ne pouvez pas modifier la date - vous en créez une nouvelle, que vous jetez au lieu de stocker dans une variable. –

0

La meilleure façon (et plus rapide) pour ce faire est pour convertir la date en nombre entier lorsque la partie de temps est stockée dans la partie décimale.

Essayez ceci:

select convert(datetime,convert(int, @yourdate)) 

Vous le convertir en un entier, puis revenir à un ensemble de données et le tour est joué, une partie de temps est révolu.

Bien sûr, la soustraction de ce résultat de la valeur d'origine vous donnera seulement la partie temps.

Questions connexes