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:
Comment puis-je supprimer les 0 de la date:
4 Réponses :
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.
StartDate
sera toujours un DateTime
, et contiendra donc toujours des informations d'heure
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.
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));
Vous devez formater la liaison sur XAML
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.
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 a> 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/...