1
votes

Comment supprimer 00:00:00 de la propriété DateTime

J'ai ListView avec le champ DateHeure qui affiche 00:00:00 sur Label , ce n'est pas nécessaire du tout.

<StackLayout Orientation="Horizontal">
    <Label HorizontalOptions="Center" VerticalOptions="Center" Text="{Binding StartDate}" />
    <Label HorizontalOptions="Center" VerticalOptions="Center" Text="To" />
    <Label HorizontalOptions="Center" VerticalOptions="Center" Text="{Binding EndDate}" />
</StackLayout>

J'ai essayé de le supprimer en utilisant la ligne ci-dessous mais ne fonctionne pas

StartDate = DateTime.ParseExact(StartDate.ToString(), "dd/MM/yyyy", CultureInfo.InvariantCulture); //NOT WORKING

Le code qui l'affiche

XXX

ListCell:

entrez la description de l'image ici

Comment puis-je supprimer les 0 de la date:


6 commentaires

Vous voulez le formater en affichage, pas en valeur. Vous pouvez utiliser des métadonnées telles que [DataType (DataType.Date)] au-dessus de la déclaration de propriété


@Rafalon - Veuillez vérifier ma question mise à jour.


Merci, consultez également mon commentaire mis à jour ^^


Regardez Formatage des chaînes pour Xamarin.Forms


date.ToShortDateString (); ou date.ToString ("jj-MM-aaaa"); n'importe laquelle de ces méthodes fonctionnera


associé: stackoverflow.com/questions/32814176/… , stackoverflow.com/questions/685743/... , stackoverflow.com/questions/447035/...


4 Réponses :


0
votes

Utilisez StartDate.ToShortDateString () au lieu de StartDate.ToString (). ToShortDateString renvoie une chaîne contenant la représentation sous forme de chaîne de date courte de l'objet DateTime actuel.


1 commentaires

StartDate sera toujours un DateTime , et contiendra donc toujours des informations d'heure



0
votes

date.ToString ("d") Il existe d'autres formats mais "d" est la date courte. Vous devez modifier la chaîne de sortie, pas le DateTime lui-même. Le type DateTime contient la date et l'heure, comme son nom l'indique et la suppression de l'heure n'est pas possible mais vous n'avez pas besoin d'utiliser l'heure.


0 commentaires

4
votes

Ce n'est pas ainsi que DateTime fonctionne en C #, permettez-moi de donner un exemple:

<StackLayout Orientation="Horizontal">
    <Label HorizontalOptions="Center" VerticalOptions="Center" Text="{Binding StartDate, StringFormat='{0:d}'}" />
    <Label HorizontalOptions="Center" VerticalOptions="Center" Text="To" />
    <Label HorizontalOptions="Center" VerticalOptions="Center" Text="{Binding EndDate, StringFormat='{0:d}'}" />
</StackLayout>

Ceci est attendu, car chaque propriété de la structure DateTime a une valeur après le constructeur, 00:00:00 est simplement la valeur par défaut. Ce que vous devez faire est de le formater là où vous l'affichez (donc dans votre étiquette), en utilisant StringFormat et un spécificateur de format pour DateHeure , celui que vous voulez probablement est d . Donc, votre xaml devrait aimer ceci:

// This will print '01.01.2000 00:00:00'
Console.WriteLine(DateTime.ParseExact("01/01/1970", "dd/MM/yyy", CultureInfor.InvariantCulture));


0 commentaires

2
votes

Vous devez formater la liaison sur XAML

https://blogs.msdn.microsoft.com/vsdata/2009/07/06/customize-format-of-datetime-string-in -wpf-and-winform-data-binding /

https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format- chaînes

<Label HorizontalOptions="Center" VerticalOptions="Center" Text="{Binding StartDate, StringFormat='{0:d}'}" />

par exemple.


0 commentaires