Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / 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)) { return false; } 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. /****************************************************************************\ * * 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. // //+------------------------------------------------------------------------------------- ///using the arguments. /// /// 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)) { return false; } 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
- Timeline.cs
- BinaryReader.cs
- Dictionary.cs
- ScriptHandlerFactory.cs
- PartialCachingControl.cs
- DataGridViewSelectedRowCollection.cs
- GetPageNumberCompletedEventArgs.cs
- QueryCacheManager.cs
- CodeActivityContext.cs
- MenuTracker.cs
- XmlSchemaSimpleTypeRestriction.cs
- DictionaryGlobals.cs
- GeometryDrawing.cs
- InvalidPrinterException.cs
- ToolStripPanel.cs
- ObjectDataSourceDisposingEventArgs.cs
- pingexception.cs
- OleServicesContext.cs
- InternalBufferOverflowException.cs
- ConfigurationLocation.cs
- PersonalizableTypeEntry.cs
- BoundsDrawingContextWalker.cs
- WorkerRequest.cs
- XmlSchemaDocumentation.cs
- EncoderBestFitFallback.cs
- ComponentSerializationService.cs
- SamlAuthorizationDecisionStatement.cs
- DesignTimeXamlWriter.cs
- SnapshotChangeTrackingStrategy.cs
- RequestSecurityToken.cs
- ObjectAssociationEndMapping.cs
- DBAsyncResult.cs
- RecipientIdentity.cs
- XmlWellformedWriter.cs
- DocumentAutomationPeer.cs
- Queue.cs
- xdrvalidator.cs
- PermissionSetEnumerator.cs
- CachingHintValidation.cs
- AppSettingsExpressionEditor.cs
- SQlBooleanStorage.cs
- StaticExtension.cs
- RestHandler.cs
- util.cs
- ToolStripRendererSwitcher.cs
- DictionarySectionHandler.cs
- WebPartAddingEventArgs.cs
- HistoryEventArgs.cs
- DrawingCollection.cs
- CodeLinePragma.cs
- PropertyCollection.cs
- InputProviderSite.cs
- DefaultMemberAttribute.cs
- CharKeyFrameCollection.cs
- ChtmlTextWriter.cs
- InternalControlCollection.cs
- IsolatedStorageFilePermission.cs
- WebScriptEnablingBehavior.cs
- MemberPathMap.cs
- AttachInfo.cs
- SystemDropShadowChrome.cs
- DataConnectionHelper.cs
- CustomErrorCollection.cs
- TextTrailingCharacterEllipsis.cs
- DataServiceStreamResponse.cs
- httpserverutility.cs
- NotConverter.cs
- wgx_sdk_version.cs
- EncodingNLS.cs
- FindSimilarActivitiesVerb.cs
- latinshape.cs
- EventLogTraceListener.cs
- FlowLayout.cs
- LayeredChannelFactory.cs
- PeerCollaborationPermission.cs
- XmlSchemaSimpleType.cs
- CompressionTransform.cs
- HtmlInputReset.cs
- ThicknessAnimationBase.cs
- PriorityRange.cs
- Math.cs
- _Semaphore.cs
- StartUpEventArgs.cs
- RelatedEnd.cs
- GraphicsContext.cs
- FrameworkReadOnlyPropertyMetadata.cs
- MenuItemStyleCollection.cs
- BitmapInitialize.cs
- VersionPair.cs
- TextEvent.cs
- ManageRequest.cs
- CmsInterop.cs
- BindStream.cs
- ObjectCacheSettings.cs
- EnumerableRowCollection.cs
- SlotInfo.cs
- ValidationRule.cs
- InstrumentationTracker.cs
- ExponentialEase.cs
- PropertiesTab.cs