Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / wpf / src / Base / System / Windows / Markup / DateTimeValueSerializer.cs / 2 / 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 = System.Windows.Markup.TypeConverterHelper.EnglishUSCulture; 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(), System.Windows.Markup.TypeConverterHelper.EnglishUSCulture); } } } // 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 = System.Windows.Markup.TypeConverterHelper.EnglishUSCulture; 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(), System.Windows.Markup.TypeConverterHelper.EnglishUSCulture); } } } // 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
- ErrorWrapper.cs
- WebPartMovingEventArgs.cs
- RoleBoolean.cs
- PropertyEmitterBase.cs
- EntityCommandDefinition.cs
- Event.cs
- TransformerInfo.cs
- CollectionBase.cs
- ActivityCodeDomReferenceService.cs
- Attributes.cs
- CodeTypeReference.cs
- XmlSerializerNamespaces.cs
- MatrixIndependentAnimationStorage.cs
- CharacterMetrics.cs
- EnumerableCollectionView.cs
- IisTraceWebEventProvider.cs
- NoneExcludedImageIndexConverter.cs
- JsonDataContract.cs
- WindowsScroll.cs
- AutomationIdentifier.cs
- EntityTypeBase.cs
- Rotation3D.cs
- XmlDomTextWriter.cs
- HScrollBar.cs
- StrictAndMessageFilter.cs
- Switch.cs
- WebDisplayNameAttribute.cs
- RequestCache.cs
- SupportingTokenSpecification.cs
- ACE.cs
- DocumentEventArgs.cs
- ToolStripTextBox.cs
- CustomErrorsSection.cs
- PrePostDescendentsWalker.cs
- List.cs
- ComboBoxAutomationPeer.cs
- ImageSourceValueSerializer.cs
- CharUnicodeInfo.cs
- XPathNode.cs
- DropShadowBitmapEffect.cs
- DocumentManager.cs
- OleDbCommand.cs
- SecurityHelper.cs
- StructureChangedEventArgs.cs
- PrinterResolution.cs
- TranslateTransform.cs
- SoapCodeExporter.cs
- XpsFilter.cs
- Utility.cs
- ExpressionVisitor.cs
- MergeFailedEvent.cs
- CodeGen.cs
- SqlCacheDependencySection.cs
- EntityDataSourceValidationException.cs
- IQueryable.cs
- UniqueIdentifierService.cs
- WebEventTraceProvider.cs
- GeometryHitTestResult.cs
- StringHelper.cs
- QuaternionAnimationUsingKeyFrames.cs
- RoleService.cs
- httpstaticobjectscollection.cs
- NonDualMessageSecurityOverHttp.cs
- SoapSchemaExporter.cs
- XslTransform.cs
- ObjRef.cs
- AmbientValueAttribute.cs
- WindowsComboBox.cs
- Message.cs
- TableStyle.cs
- ListMarkerSourceInfo.cs
- PerfService.cs
- SizeChangedInfo.cs
- SecuritySessionFilter.cs
- BamlStream.cs
- DefaultBinder.cs
- XsltContext.cs
- ScriptIgnoreAttribute.cs
- Variable.cs
- XmlTextAttribute.cs
- PropertyMetadata.cs
- UpdateTracker.cs
- AnnotationMap.cs
- Lasso.cs
- SqlLiftIndependentRowExpressions.cs
- TextRangeAdaptor.cs
- AttributeCollection.cs
- XNameTypeConverter.cs
- OdbcConnection.cs
- Constraint.cs
- FreezableOperations.cs
- JsonWriterDelegator.cs
- DataGrid.cs
- RepeaterDataBoundAdapter.cs
- Volatile.cs
- TaskFormBase.cs
- WindowPattern.cs
- RuntimeWrappedException.cs
- CommunicationObjectAbortedException.cs
- CurrencyWrapper.cs