DateTime::TryParseExact Method (String, String, IFormatProvider, DateTimeStyles, DateTime%)
Converts the specified string representation of a date and time to its DateTime equivalent using the specified format, culture-specific format information, and style. The format of the string representation must match the specified format exactly. The method returns a value that indicates whether the conversion succeeded.
Assembly: mscorlib (in mscorlib.dll)
public: static bool TryParseExact( String^ s, String^ format, IFormatProvider^ provider, DateTimeStyles style, [OutAttribute] DateTime% result )
- Type: System::String
A string containing a date and time to convert.
- Type: System::String
The required format of s. See the Remarks section for more information.
- Type: System::IFormatProvider
An object that supplies culture-specific formatting information about s.
- Type: System.Globalization::DateTimeStyles
A bitwise combination of one or more enumeration values that indicate the permitted format of s.
- Type: System::DateTime%
When this method returns, contains the DateTime value equivalent to the date and time contained in s, if the conversion succeeded, or MinValue if the conversion failed. The conversion fails if either the s or format parameter is nullptr, is an empty string, or does not contain a date and time that correspond to the pattern specified in format. This parameter is passed uninitialized.
Return ValueType: System::Boolean
true if s was converted successfully; otherwise, false.
The method parses the string representation of a date, which must be in the format defined by the format parameter. It is similar to the DateTime::ParseExact(String, String, IFormatProvider, DateTimeStyles) method, except that the method does not throw an exception if the conversion fails.
The s parameter contains the date and time to parse and must be in a format defined by the format parameter. If date, time, and time zone elements are present in s, they must also appear in the order specified by format. If format defines a date with no time element and the parse operation succeeds, the resulting DateTime value has a time of midnight (00:00:00). If format defines a time with no date element and the parse operation succeeds, the resulting DateTime value by default has a date of DateTime.Now.Date, or it has a date of DateTime.MinValue.Date if styles includes the DateTimeStyles::NoCurrentDateDefault flag. The style parameter determines whether the s parameter can contain leading, inner, or trailing white space characters.
If s contains no time zone information, the Kind property of the returned DateTime object is DateTimeKind::Unspecified. This behavior can be changed by using the DateTimeStyles::AssumeLocal flag, which returns a DateTime value whose Kind property is DateTimeKind::Local, or by using the DateTimeStyles::AssumeUniversal and DateTimeStyles::AdjustToUniversal flags, which returns a DateTime value whose Kind property is DateTimeKind::Utc. If s contains time zone information, the time is converted to local time, if necessary, and the Kind property of the returned DateTime object is set to DateTimeKind::Local. This behavior can be changed by using the DateTimeStyles::RoundtripKind flag to not convert Coordinated Universal Time (UTC) to a local time and set the Kind property to DateTimeKind::Utc.
The format parameter contains a pattern that corresponds to the expected format of the s parameter. The pattern in the format parameter consists of one or more custom format specifiers from the Custom Date and Time Format Strings table, or a single standard format specifier, which identifies a predefined pattern, from the Standard Date and Time Format Strings table.
If you do not use date or time separators in a custom format pattern, use the invariant culture for the provider parameter and the widest form of each custom format specifier. For example, if you want to specify hours in the pattern, specify the wider form, "HH", instead of the narrower form, "H".
Rather than requiring that s conform to a single format for the parse operation to succeed, you can call the DateTime::TryParseExact(String, array<String>, IFormatProvider, DateTimeStyles, DateTime%) method and specify multiple permitted formats. This makes the parse operation more likely to succeed.
The particular date and time symbols and strings (such as the names of the days of the week in a particular language) used in s are defined by the provider parameter, as is the precise format of s if format is a standard format specifier string. The provider parameter can be any of the following:
A DateTimeFormatInfo object that defines the format of date and time data.
If provider is nullptr, the CultureInfo object that corresponds to the current culture is used.
The styles parameter includes one or more members of the DateTimeStyles enumeration that determine whether and where white space not defined by format can appear in s and that control the precise behavior of the parse operation. The following table describes how each member of the DateTimeStyles enumeration affects the operation of the method.
Parses s and, if necessary, converts it to UTC. If s includes a time zone offset, or if s contains no time zone information but styles includes the DateTimeStyles::AssumeLocal flag, the method parses the string, calls ToUniversalTime to convert the returned DateTime value to UTC, and sets the Kind property to DateTimeKind::Utc. If s indicates that it represents UTC, or if s does not contain time zone information but styles includes the DateTimeStyles::AssumeUniversal flag, the method parses the string, performs no time zone conversion on the returned DateTime value, and sets the Kind property to DateTimeKind::Utc. In all other cases, the flag has no effect.
Specifies that white space not defined by format can appear between any individual date or time element.
Specifies that white space not defined by format can appear at the beginning of s.
Specifies that white space not defined by format can appear at the end of s.
Specifies that s may contain leading, inner, and trailing white spaces not defined by format.
Specifies that if s lacks any time zone information, it is assumed to represent a local time. Unless the DateTimeStyles::AdjustToUniversal flag is present, the Kind property of the returned DateTime value is set to DateTimeKind::Local.
Specifies that if s lacks any time zone information, it is assumed to represent UTC. Unless the DateTimeStyles::AdjustToUniversal flag is present, the method converts the returned DateTime value from UTC to local time and sets its Kind property to DateTimeKind::Local.
If s contains time without date information, the date of the return value is set to DateTime.MinValue.Date.
The s parameter is parsed using default values. No white space other than that present in format is allowed. If s lacks a date component, the date of the returned DateTime value is set to 1/1/0001. If s contains no time zone information, the Kind property of the returned DateTime object is set to DateTimeKind::Unspecified. If time zone information is present in s, the time is converted to local time and the Kind property of the returned DateTime object is set to DateTimeKind::Local.
For strings that contain time zone information, tries to prevent the conversion to a DateTime value with its Kind property set to DateTimeKind::Local. This flag primarily prevents the conversion of UTC times to local times.
In the .NET Framework 4, the TryParseExact method returns false if the string to be parsed contains an hour component and an AM/PM designator that are not in agreement. In the .NET Framework 3.5 and earlier versions, the AM/PM designator is ignored.
The following example demonstrates the method. Note that the string " 5/01/2009 8:30 AM" cannot be parsed successfully when the styles parameter equals DateTimeStyles::None because leading spaces are not allowed by format. Additionally, the string "5/01/2009 09:00" cannot be parsed successfully with a format of "MM/dd/yyyy hh:mm" because the date string does not precede the month number with a leading zero, as format requires.
.NET FrameworkSupported in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0
.NET Framework Client ProfileSupported in: 4, 3.5 SP1
Portable Class LibrarySupported in: Portable Class Library
.NET for Windows Store appsSupported in: Windows 8
.NET for Windows Phone appsSupported in: Windows Phone 8.1, Windows Phone 8, Silverlight 8.1
Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.