Nous essayons de forcer nos objets datetime dans C# à sérialiser en utilisant un format différent de celui par défaut. Nous ne voulons pas inclure les millisecondes. Le SortableDateTimePattern et le UniversalSortableDateTimePattern sont en lecture seule.Comment modifier le format de tri universel DateTime dans .NET?
Répondre
En supposant que vous parlez d'instances DateTime dans un DataContract envoyé par le serveur, je ne pense pas qu'il existe un moyen simple de le faire. Les modèles que vous mentionnez ne sont pas utilisés (s'ils l'étaient, vous pourriez simplement pirater l'instance de modèle partagé via la réflexion pour une solution grossière mais facile). Le DataContractSerializer délègue finalement la tâche à la méthode interne XsdDateTime.ToString(), qui est codée en dur pour toujours émettre les secondes fractionnaires si elles sont non nulles. Ce n'est pas élégant, mais tirer parti du comportement codé en dur pourrait être la solution la plus simple: il suffit de copier tous vos DateTimes, en réinitialisant les millisecondes à zéro avant de quitter le serveur. Alternativement, il vous reste à brancher un IDispatchMessageFormatter ou IDispatchMessageInspector personnalisé sur les opérations affectées. Il est également possible d'utiliser un IDispatchMessageFormatter ou un IDispatchMessageInspector personnalisé. Il n'y a pas non plus de promenade dans le parc si vous voulez qu'ils soient génériques et faciles à raccorder. Juste curieux - avez-vous un client qui se comporte mal qui ne comprend pas les secondes fractionnaires?
J'ai trouvé quelques moyens de résoudre ce problème. Les méthodes plus complexes impliquent l'accrochage d'un point de terminaison MessageFormatter personnalisé.
Nous avons trouvé un moyen simple de faire cela.
la fraction de secondes n'est générée que si l'objet datetime en possède.
Ce que nous avons fait:
Nous avons créé un statique sur propertyChange gestionnaire d'événements qui utilise la réflexion pour détecter les types de données datetime. Une fois trouvé, nous recréons le datetime sans les fractions de secondes. Dans notre cas, nous nous foutions des secondes. Nous câblons l'événement dans un constructeur de classe partielle. C'est tout.
Bien sûr
public static class DateTimeSecondCatcher
{
PropertyInfo dateTimePropertyInfo = sender.GetType().GetProperty(e.PropertyName);
if ((dateTimePropertyInfo != null) && (dateTimePropertyInfo.PropertyType == typeof(DateTime)))
{
DateTime dteValue = (DateTime)dateTimePropertyInfo.GetValue(sender, null);
if (dteValue.Millisecond > 0)
{
dateTimePropertyInfo.SetValue(sender, new DateTime(dteValue.Year,dteValue.Month,dteValue.Day, dteValue.Hour,dteValue.Minute,dteValue.Second,0,dteValue.Kind), null);
}
}
}
// This code goes in the partial class constructor
this.PropertyChanged += new PropertyChangedEventHandler(DateTimeSecondCatcher.OnPropertyChanged);
- 1. comment valider le format datetime
- 2. Voir le rapport de tri DATETIME
- 3. DateTime Hex Format
- 4. comment convertir un pretime en .net datetime
- 5. Format .NET DateTime "Day" sans zéro principal
- 6. LinqDataSource et le format DateTime
- 7. Format WPF DateTime dans TextBlock?
- 8. DateTime Format en C#
- 9. Définir le format DateTime par défaut C#
- 10. Comment modifier le format de lignes spécifiées dans un RichTextBox
- 11. Format DateTime sur le serveur d'hébergement
- 12. DateTime format hexadécimal
- 13. Format RSS pubDate en tant que .NET DateTime
- 14. ASP.NET AJAX et le format DateTime sur le client
- 15. Comment puis-je changer le format datetime en sql?
- 16. Comment obtenir la date du format datetime
- 17. Quelque chose ne va pas dans le format datetime
- 18. Sql Server DATETIME format incorrrect
- 19. Modifier le tri des éléments dans gridview - LINQToSQL
- 20. Comment définir un format DateTime global dans un projet ASP.NET?
- 21. Comment lire .net xml datetime serialized de java?
- 22. Modifier les critères de tri après le premier résultat
- 23. XSLT transformation datetime au format date
- 24. gestionnaire de contenu universel
- 25. Comment faire pour modifier le format automatique Visual Studio
- 26. Tri DataGridView avec des valeurs nulles dans la colonne DateTime
- 27. RDLC-Report et CultureInfo au format Datetime
- 28. soustraction datetime .net
- 29. Comment modifier le format de papier personnalisé dans Crystal Reports dans VS 2005?
- 30. modifier jQuery UI format datepicker