我們試圖強制我們的c#中的datetime對象使用不同於默認格式的格式進行序列化。我們不想包含毫秒。 SortableDateTimePattern和UniversalSortableDateTimePattern是隻讀的。如何更改.NET中的DateTime通用排序格式?
2
A
回答
1
假設你在談論服務器發送的DataContract中的DateTime實例,我不認爲有一種簡單的方法可以做到這一點。您提到的模式不被使用(如果是的話,您可以通過反射來破解共享模式實例,以獲得一個非常簡單的解決方案)。 DataContractSerializer最終將任務委託給內部的XsdDateTime.ToString()方法,該方法經過硬編碼,如果它們非零,則始終發出小數秒。
這並不優雅,但利用硬編碼行爲可能是最簡單的解決方案:只需複製所有日期時間,在離開服務器之前將毫秒重置爲零。
另外,您還需要在受影響的操作上連接自定義IDispatchMessageFormatter或IDispatchMessageInspector。如果你想讓它們變得通用並且容易連接起來,那麼在公園裏散步也不是。
只是好奇 - 你有一個行爲不端的客戶,不明白小數秒嗎?
0
我想出了一些辦法來解決這個問題。更復雜的方法涉及到自定義MessageFormatter端點的掛鉤。
我們找到了一個簡單的方法來解決這個問題。
秒的分數只有在日期時間對象具有它們時纔會生成。
我們做了什麼:
我們創建了一個使用反射來檢測日期時間數據類型PropertyChange事件處理程序的靜態。當發現我們重新創建日期時間沒有秒的分數。在我們的案例中,我們根本不在乎秒。我們通過部分類構造函數將事件連接起來。而已。
當然
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. 如何更改DateTime/GetLastWriteTime的格式?
- 2. 我如何使用.NET中的IComparer更改排序順序
- 3. jqgrid datetime 24小時排序格式
- 4. 如何更改devexpress網格排序行的方式
- 5. 如何更改DateTime?
- 6. C#DateTime更改爲另一種格式
- 7. 將DateTime格式更改爲dd/mmmm/yyyy
- 8. 如何通過用戶事件更改SAPUI5中列表的排序或排序?
- 9. 使用datetime更改python中的時間格式
- 10. 如何更改.net中datetime選取器的彈出大小?
- 11. 如何使用Gson在Android中反序列化.NET JsonResult DateTime格式?
- 12. 如何在SQL Server中使用datetime DateType更改日期的格式?
- 13. 如何返回DateTime而不更改格式
- 14. 如何通過在Angularjs中降序datetime ng-repeat來排序?
- 15. 如何更改光標中的排序
- 16. 如何更改Ruby中DateTime的時區?
- 17. 如何更改DateTime中的時間?
- 18. 在winform C中更改DATETIME屬性的格式#
- 19. 更改對象中屬性的DateTime格式?
- 20. Sharepoint 2013:如何在NewForm/EditForm中更改DateTime文本框的日期格式?
- 21. 如何更改.Net MVC中DateTime模型綁定器上的默認輸入格式?
- 22. 如何用JavaScript更改URL的格式?
- 23. 將格式從mySQL datetime格式更改爲ruby中的不同類型?
- 24. 如何更改格式1格式2
- 25. 如何通知WPF數據綁定中的DateTime更改事件?
- 26. 如何更改solr中的defaults.last_index_time格式
- 27. 如何更改Wordpress中的URL格式?
- 28. C#:更改格式日期中帶前導零在DateTime中
- 29. DateTime格式在C#中沒有改變
- 30. 在插件中更改「排序方式」