Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Base / System / Windows / Markup / DateTimeValueSerializer.cs / 1 / DateTimeValueSerializer.cs
/****************************************************************************\ * * File: DateTimeValueSerializer.cs * \***************************************************************************/ using System.Globalization; using System.Text; namespace System.Windows.Markup { //+------------------------------------------------------------------------------------- // // DateTimeValueSerializer // // This class converts DateTime values to/from string. We don't use the DateTimeConverter // because it doesn't support custom cultures, and in Xaml we require the converter to // support en-us culture. // //+------------------------------------------------------------------------------------- ////// ValueSerializer for DateTime. /// public class DateTimeValueSerializer : ValueSerializer { ////// Initializes a new instance of the public DateTimeValueSerializer() { } ///class. /// /// Indicate that we do convert DateTime's from string. /// public override bool CanConvertFromString(string value, IValueSerializerContext context) { return true; } ////// Indicate that we do convert a DateTime to string. /// public override bool CanConvertToString(object value, IValueSerializerContext context) { // Validate the input type if ( !(value is DateTime)) { throw new ArgumentException(SR.Get(SRID.General_Expected_Type, "DateTime"), "value"); } return true; } ////// Converts the given value object to a public override object ConvertFromString(string value, IValueSerializerContext context) { // Validate and clean up input. if( value == null ) { throw GetConvertFromException(value); } if( value.Length == 0 ) { return DateTime.MinValue; } // Get a DateTimeFormatInfo CultureInfo culture = CultureInfo.GetCultureInfo("en-US"); DateTimeFormatInfo dateTimeFormatInfo; dateTimeFormatInfo = (DateTimeFormatInfo)culture.GetFormat(typeof(DateTimeFormatInfo)); // Set the formatting style for round-tripping and to trim the string. DateTimeStyles dateTimeStyles = DateTimeStyles.RoundtripKind | DateTimeStyles.NoCurrentDateDefault | DateTimeStyles.AllowLeadingWhite | DateTimeStyles.AllowTrailingWhite; // Create the DateTime, using the DateTimeInfo if possible, and the culture otherwise. if (dateTimeFormatInfo != null) { return DateTime.Parse(value, dateTimeFormatInfo, dateTimeStyles); } else { // The culture didn't have a DateTimeFormatInfo. return DateTime.Parse(value, culture, dateTimeStyles); } } ///. /// /// Converts the given value object to a public override string ConvertToString(object value, IValueSerializerContext context) { if( value == null || !(value is DateTime)) { throw GetConvertToException( value, typeof(string) ); } DateTime dateTime = (DateTime)value; // Build up the format string to be used in DateTime.ToString() StringBuilder formatString = new StringBuilder("yyyy-MM-dd"); if (dateTime.TimeOfDay.TotalSeconds == 0) { // The time portion of this DateTime is exactly at midnight. // We don't include the time component if the Kind is unspecified. // Otherwise, we're going to be including the time zone info, so'll // we'll have to include the time. if( dateTime.Kind != DateTimeKind.Unspecified ) { formatString.Append("'T'HH':'mm"); } } else { // We're going to write out at least the hours/minutes formatString.Append("'T'HH':'mm"); if (dateTime.TimeOfDay.Seconds != 0 || dateTime.TimeOfDay.Milliseconds != 0) { // We have seconds, so we'll write them out too. formatString.Append("':'ss"); if (dateTime.TimeOfDay.Milliseconds != 0) { // And we have milliseconds formatString.Append("'.'FFFFFFF"); } } } // Add the format specifier that indicates we want the DateTimeKind to be // included in the output formulation -- UTC gets written out with a "Z", // and Local gets written out with e.g. "-08:00" for Pacific Standard Time. formatString.Append("K"); // We've finally got our format string built, we can create the string. return dateTime.ToString(formatString.ToString(), CultureInfo.GetCultureInfo("en-US") ); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.using the arguments. ///
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- HttpApplication.cs
- ErrorFormatter.cs
- XmlBoundElement.cs
- DialogResultConverter.cs
- CompatibleComparer.cs
- IPCCacheManager.cs
- BindingCollection.cs
- KoreanLunisolarCalendar.cs
- GridViewEditEventArgs.cs
- OdbcUtils.cs
- ServiceNameCollection.cs
- ConfigurationLocationCollection.cs
- UnauthorizedAccessException.cs
- ThemeableAttribute.cs
- InvalidDataException.cs
- TextFormatterHost.cs
- CollectionBase.cs
- VisualTransition.cs
- OpenTypeLayout.cs
- BamlReader.cs
- ProgressPage.cs
- ToolStripItemClickedEventArgs.cs
- WindowsImpersonationContext.cs
- SimpleHandlerBuildProvider.cs
- ObjectFullSpanRewriter.cs
- InputLanguage.cs
- FocusWithinProperty.cs
- DurableInstanceManager.cs
- ApplicationServiceHelper.cs
- ValidationEventArgs.cs
- DataContractSerializer.cs
- Module.cs
- LinqDataSourceDeleteEventArgs.cs
- PageThemeParser.cs
- validation.cs
- SimpleTypeResolver.cs
- MetadataArtifactLoaderCompositeFile.cs
- PageOutputColor.cs
- ManagementDateTime.cs
- DecoratedNameAttribute.cs
- MimePart.cs
- CookieHandler.cs
- MouseButtonEventArgs.cs
- PhysicalFontFamily.cs
- IdnElement.cs
- HwndHostAutomationPeer.cs
- DataPager.cs
- ReadOnlyCollectionBase.cs
- SafeIUnknown.cs
- MenuItem.cs
- TextHintingModeValidation.cs
- EffectiveValueEntry.cs
- ComPlusAuthorization.cs
- ArrayList.cs
- SelectedGridItemChangedEvent.cs
- BrowserCapabilitiesFactory.cs
- SqlBulkCopyColumnMapping.cs
- ToolStripLocationCancelEventArgs.cs
- PageThemeCodeDomTreeGenerator.cs
- WorkflowTerminatedException.cs
- Logging.cs
- RowToParametersTransformer.cs
- FtpRequestCacheValidator.cs
- AccessDataSourceWizardForm.cs
- BindingCollection.cs
- IndexedString.cs
- messageonlyhwndwrapper.cs
- AxHost.cs
- DebugHandleTracker.cs
- ResourcePool.cs
- TypeDefinition.cs
- AuthenticationService.cs
- Gdiplus.cs
- DiscreteKeyFrames.cs
- RSAProtectedConfigurationProvider.cs
- DataPagerFieldItem.cs
- SqlConnectionPoolGroupProviderInfo.cs
- SingleTagSectionHandler.cs
- ParenExpr.cs
- CssStyleCollection.cs
- DataSourceHelper.cs
- SkewTransform.cs
- FontFamilyIdentifier.cs
- AccessorTable.cs
- ValidatedControlConverter.cs
- StorageAssociationTypeMapping.cs
- EtwTrace.cs
- ResourceExpression.cs
- DirectoryNotFoundException.cs
- Directory.cs
- TokenizerHelper.cs
- ProgressBarAutomationPeer.cs
- TypeDelegator.cs
- WebConvert.cs
- SelectorItemAutomationPeer.cs
- AxHost.cs
- DataServicePagingProviderWrapper.cs
- RandomNumberGenerator.cs
- NamespaceQuery.cs
- datacache.cs