DateTimeOffset.TryParseExact Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Преобразует заданное строковое представление даты и времени в его эквивалент DateTimeOffset. Формат строкового представления должен полностью соответствовать заданному формату.
Перегрузки
TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTimeOffset) |
Преобразует заданное строковое представление даты и времени в его эквивалент DateTimeOffset, используя заданный массив форматов, указанные сведения о форматировании, связанные с языком и региональными параметрами, и стиль форматирования. Формат строкового представления должен полностью соответствовать одному из заданных форматов. |
TryParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTimeOffset) |
Преобразует представление даты и времени в диапазоне символов в его эквивалент DateTimeOffset, используя заданный формат, сведения о форматировании, связанные с языком и региональными параметрами, а также стиль. Формат отображения даты и времени должен полностью соответствовать заданному формату. |
TryParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles, DateTimeOffset) |
Преобразует представление даты и времени в диапазоне символов в его эквивалент типа DateTimeOffset, используя указанные форматы, сведения о форматировании для определенного языка и региональных параметров, а также стиль. Формат представления даты и времени должен полностью соответствовать одному из заданных форматов. |
TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTimeOffset) |
Преобразует заданное строковое представление даты и времени в его эквивалент DateTimeOffset, используя заданный формат, указанные сведения о форматировании, связанные с языком и региональными параметрами, а также стиль. Формат строкового представления должен полностью соответствовать заданному формату. |
TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTimeOffset)
- Исходный код:
- DateTimeOffset.cs
- Исходный код:
- DateTimeOffset.cs
- Исходный код:
- DateTimeOffset.cs
Преобразует заданное строковое представление даты и времени в его эквивалент DateTimeOffset, используя заданный массив форматов, указанные сведения о форматировании, связанные с языком и региональными параметрами, и стиль форматирования. Формат строкового представления должен полностью соответствовать одному из заданных форматов.
public:
static bool TryParseExact(System::String ^ input, cli::array <System::String ^> ^ formats, IFormatProvider ^ formatProvider, System::Globalization::DateTimeStyles styles, [Runtime::InteropServices::Out] DateTimeOffset % result);
public static bool TryParseExact (string input, string[] formats, IFormatProvider formatProvider, System.Globalization.DateTimeStyles styles, out DateTimeOffset result);
public static bool TryParseExact (string? input, string?[]? formats, IFormatProvider? formatProvider, System.Globalization.DateTimeStyles styles, out DateTimeOffset result);
static member TryParseExact : string * string[] * IFormatProvider * System.Globalization.DateTimeStyles * DateTimeOffset -> bool
Public Shared Function TryParseExact (input As String, formats As String(), formatProvider As IFormatProvider, styles As DateTimeStyles, ByRef result As DateTimeOffset) As Boolean
Параметры
- input
- String
Строка, содержащая дату и время, которые нужно преобразовать.
- formats
- String[]
Массив, в котором задаются ожидаемые форматы input
.
- formatProvider
- IFormatProvider
Объект, который предоставляет сведения о форматировании параметра input
в зависимости от языка и региональных параметров.
- styles
- DateTimeStyles
Побитовое сочетание значений перечисления, которое показывает разрешенный формат ввода. Обычно указывается значение None
.
- result
- DateTimeOffset
При возврате метода содержит DateTimeOffset эквивалент даты и времени input
, если преобразование выполнено успешно, или DateTimeOffset.MinValue, если преобразование завершилось сбоем. Преобразование завершается неудачно, если параметр format
не содержит допустимое строчное представление даты и времени или же даты и времени в требуемом формате, заданном параметром formats
, или если параметр null
имеет значение input
. Этот параметр передается неинициализированным.
Возвращаемое значение
Значение true
, если параметр input
успешно преобразован; в противном случае — значение false
.
Исключения
Параметр styles
включает неопределенное значение DateTimeStyles.
-или-
Тип NoCurrentDateDefault не поддерживается.
-или-
Параметр styles
содержит взаимоисключающие значения DateTimeStyles.
Примеры
В следующем примере определяется несколько входных форматов для строкового представления даты и времени и значения смещения, а затем в метод передается TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTimeOffset) введенная пользователем строка.
TextReader conIn = Console.In;
TextWriter conOut = Console.Out;
int tries = 0;
string input = String.Empty;
string[] formats = new string[] {"M/dd/yyyy HH:m zzz", "MM/dd/yyyy HH:m zzz",
"M/d/yyyy HH:m zzz", "MM/d/yyyy HH:m zzz",
"M/dd/yy HH:m zzz", "MM/dd/yy HH:m zzz",
"M/d/yy HH:m zzz", "MM/d/yy HH:m zzz",
"M/dd/yyyy H:m zzz", "MM/dd/yyyy H:m zzz",
"M/d/yyyy H:m zzz", "MM/d/yyyy H:m zzz",
"M/dd/yy H:m zzz", "MM/dd/yy H:m zzz",
"M/d/yy H:m zzz", "MM/d/yy H:m zzz",
"M/dd/yyyy HH:mm zzz", "MM/dd/yyyy HH:mm zzz",
"M/d/yyyy HH:mm zzz", "MM/d/yyyy HH:mm zzz",
"M/dd/yy HH:mm zzz", "MM/dd/yy HH:mm zzz",
"M/d/yy HH:mm zzz", "MM/d/yy HH:mm zzz",
"M/dd/yyyy H:mm zzz", "MM/dd/yyyy H:mm zzz",
"M/d/yyyy H:mm zzz", "MM/d/yyyy H:mm zzz",
"M/dd/yy H:mm zzz", "MM/dd/yy H:mm zzz",
"M/d/yy H:mm zzz", "MM/d/yy H:mm zzz"};
IFormatProvider provider = CultureInfo.InvariantCulture.DateTimeFormat;
DateTimeOffset result;
do {
conOut.WriteLine("Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),");
conOut.Write("Then press Enter: ");
input = conIn.ReadLine();
conOut.WriteLine();
if (DateTimeOffset.TryParseExact(input, formats, provider,
DateTimeStyles.AllowWhiteSpaces,
out result))
{
break;
}
else
{
Console.WriteLine("Unable to parse {0}.", input);
tries++;
}
} while (tries < 3);
if (tries >= 3)
Console.WriteLine("Exiting application without parsing {0}", input);
else
Console.WriteLine("{0} was converted to {1}", input, result.ToString());
// Some successful sample interactions with the user might appear as follows:
// Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),
// Then press Enter: 12/08/2007 6:54 -6:00
//
// 12/08/2007 6:54 -6:00 was converted to 12/8/2007 6:54:00 AM -06:00
//
// Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),
// Then press Enter: 12/8/2007 06:54 -06:00
//
// 12/8/2007 06:54 -06:00 was converted to 12/8/2007 6:54:00 AM -06:00
//
// Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),
// Then press Enter: 12/5/07 6:54 -6:00
//
// 12/5/07 6:54 -6:00 was converted to 12/5/2007 6:54:00 AM -06:00
let mutable result = None
let mutable tries = 0
let mutable input = ""
let formats =
[| "M/dd/yyyy HH:m zzz"; "MM/dd/yyyy HH:m zzz"
"M/d/yyyy HH:m zzz"; "MM/d/yyyy HH:m zzz"
"M/dd/yy HH:m zzz"; "MM/dd/yy HH:m zzz"
"M/d/yy HH:m zzz"; "MM/d/yy HH:m zzz"
"M/dd/yyyy H:m zzz"; "MM/dd/yyyy H:m zzz"
"M/d/yyyy H:m zzz"; "MM/d/yyyy H:m zzz"
"M/dd/yy H:m zzz"; "MM/dd/yy H:m zzz"
"M/d/yy H:m zzz"; "MM/d/yy H:m zzz"
"M/dd/yyyy HH:mm zzz"; "MM/dd/yyyy HH:mm zzz"
"M/d/yyyy HH:mm zzz"; "MM/d/yyyy HH:mm zzz"
"M/dd/yy HH:mm zzz"; "MM/dd/yy HH:mm zzz"
"M/d/yy HH:mm zzz"; "MM/d/yy HH:mm zzz"
"M/dd/yyyy H:mm zzz"; "MM/dd/yyyy H:mm zzz"
"M/d/yyyy H:mm zzz"; "MM/d/yyyy H:mm zzz"
"M/dd/yy H:mm zzz"; "MM/dd/yy H:mm zzz"
"M/d/yy H:mm zzz"; "MM/d/yy H:mm zzz" |]
let provider = CultureInfo.InvariantCulture.DateTimeFormat
while tries < 3 && result.IsNone do
printfn "Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),"
printf "Then press Enter: "
input <- stdin.ReadLine()
printfn ""
match DateTimeOffset.TryParseExact(input, formats, provider, DateTimeStyles.AllowWhiteSpaces) with
| true, dto ->
result <- Some dto
| _ ->
printfn $"Unable to parse {input}."
tries <- tries + 1
match result with
| Some result ->
printfn $"{input} was converted to {result}"
| None ->
printfn $"Exiting application without parsing {input}"
// Some successful sample interactions with the user might appear as follows:
// Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),
// Then press Enter: 12/08/2007 6:54 -6:00
//
// 12/08/2007 6:54 -6:00 was converted to 12/8/2007 6:54:00 AM -06:00
//
// Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),
// Then press Enter: 12/8/2007 06:54 -06:00
//
// 12/8/2007 06:54 -06:00 was converted to 12/8/2007 6:54:00 AM -06:00
//
// Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),
// Then press Enter: 12/5/07 6:54 -6:00
//
// 12/5/07 6:54 -6:00 was converted to 12/5/2007 6:54:00 AM -06:00
Dim conIn As TextReader = Console.In
Dim conOut As TextWriter = Console.Out
Dim tries As Integer = 0
Dim input As String = String.Empty
Dim formats() As String = {"M/dd/yyyy HH:m zzz", "MM/dd/yyyy HH:m zzz", _
"M/d/yyyy HH:m zzz", "MM/d/yyyy HH:m zzz", _
"M/dd/yy HH:m zzz", "MM/dd/yy HH:m zzz", _
"M/d/yy HH:m zzz", "MM/d/yy HH:m zzz", _
"M/dd/yyyy H:m zzz", "MM/dd/yyyy H:m zzz", _
"M/d/yyyy H:m zzz", "MM/d/yyyy H:m zzz", _
"M/dd/yy H:m zzz", "MM/dd/yy H:m zzz", _
"M/d/yy H:m zzz", "MM/d/yy H:m zzz", _
"M/dd/yyyy HH:mm zzz", "MM/dd/yyyy HH:mm zzz", _
"M/d/yyyy HH:mm zzz", "MM/d/yyyy HH:mm zzz", _
"M/dd/yy HH:mm zzz", "MM/dd/yy HH:mm zzz", _
"M/d/yy HH:mm zzz", "MM/d/yy HH:mm zzz", _
"M/dd/yyyy H:mm zzz", "MM/dd/yyyy H:mm zzz", _
"M/d/yyyy H:mm zzz", "MM/d/yyyy H:mm zzz", _
"M/dd/yy H:mm zzz", "MM/dd/yy H:mm zzz", _
"M/d/yy H:mm zzz", "MM/d/yy H:mm zzz"}
Dim provider As IFormatProvider = CultureInfo.InvariantCulture.DateTimeFormat
Dim result As DateTimeOffset
Do
conOut.WriteLine("Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),")
conOut.Write("Then press Enter: ")
input = conIn.ReadLine()
conOut.WriteLine()
If DateTimeOffset.TryParseExact(input, formats, provider, _
DateTimeStyles.AllowWhiteSpaces, _
result) Then
Exit Do
Else
Console.WriteLine("Unable to parse {0}.", input)
tries += 1
End If
Loop While tries < 3
If tries >= 3 Then
Console.WriteLine("Exiting application without parsing {0}", input)
Else
Console.WriteLine("{0} was converted to {1}", input, result.ToString())
End If
' Some successful sample interactions with the user might appear as follows:
' Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),
' Then press Enter: 12/08/2007 6:54 -6:00
'
' 12/08/2007 6:54 -6:00 was converted to 12/8/2007 6:54:00 AM -06:00
'
' Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),
' Then press Enter: 12/8/2007 06:54 -06:00
'
' 12/8/2007 06:54 -06:00 was converted to 12/8/2007 6:54:00 AM -06:00
'
' Enter a date, time, and offset (MM/DD/YYYY HH:MM +/-HH:MM),
' Then press Enter: 12/5/07 6:54 -6:00
'
' 12/5/07 6:54 -6:00 was converted to 12/5/2007 6:54:00 AM -06:00
Комментарии
Метод TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTimeOffset) анализирует строковое представление даты, которая соответствует любому из шаблонов, назначенных массиву formats
.
input
Если строка не соответствует ни одному из этих шаблонов с вариантами, определенными параметром styles
, операция синтаксического анализа завершается ошибкой и метод возвращает false
. Помимо сравнения с input
несколькими строками, содержащими описатели формата, эта перегрузка ведет себя идентично методу DateTimeOffset.ParseExact(String, String[], IFormatProvider, DateTimeStyles) .
Параметр formats
является строковым массивом, элементы которого содержат либо один описатель стандартного формата, либо один или несколько настраиваемых описателей формата, определяющих возможный input
шаблон . Дополнительные сведения о допустимых кодах форматирования см. в разделах Стандартные строки формата даты и времени и Настраиваемые строки формата даты и времени. Если соответствующий элемент в formats
содержит описатели пользовательского z
формата , zz
или zzz
, чтобы указать, что смещение должно присутствовать в input
, это смещение должно включать либо отрицательный, либо положительный знак. Если знак отсутствует, операция синтаксического анализа завершается сбоем и метод возвращает false
.
Важно!
formats
Использование параметра этой перегрузки для указания нескольких форматов может помочь уменьшить разочарование многих пользователей при вводе дат и времени. В частности, возможность определения нескольких шаблонов ввода позволяет приложению обрабатывать представления даты и времени, которые могут включать или отсутствовать начальные нули в месяцах, днях, часах, минутах и секундах. Пример демонстрирует это.
Если для соответствующего элемента в formats
требуется, чтобы input
он содержал дату, но не время, результирующий DateTimeOffset объект получает время полуночи (0:00:00). Если для соответствующего элемента в formats
требуется, чтобы входные данные содержали время, но не дату, результирующий DateTimeOffset объект назначается текущей дате в локальной системе. Если сопоставленный элемент в formats
не требует, чтобы input
он содержал смещениеstyles
, смещение результирующего DateTimeOffset объекта зависит от значения параметра . Если styles
включает AssumeLocal, смещение местного часового пояса назначается объекту DateTimeOffset . Если styles
включает AssumeUniversal, то объекту назначается смещение DateTimeOffset по времени в формате UTC или +00:00. Если ни значение не указано, используется смещение местного часового пояса.
Конкретные символы даты и времени и строки, используемые в input
, определяются параметром formatProvider
. То же самое относится и к точному шаблону , input
если соответствующий элемент является строкой описатель стандартного formats
формата. Параметр formatProvider
может иметь один из следующих значений:
Объект CultureInfo , представляющий язык и региональные параметры, на основе которых
input
интерпретируется. Объект DateTimeFormatInfo , возвращаемый свойством CultureInfo.DateTimeFormat , определяет символы и форматирование вinput
.Объект DateTimeFormatInfo , определяющий формат данных даты и времени.
Если formatprovider
имеет значение null
, CultureInfo используется объект , соответствующий текущему языку и региональным параметрам.
Параметр styles
определяет, разрешено ли пробелы во входной строке, указывает, как анализируются строки без явного компонента смещения, и поддерживает преобразование в формате UTC в рамках операции синтаксического анализа. Поддерживаются все члены перечисления DateTimeStyles , кроме NoCurrentDateDefault. В следующей таблице перечислены эффекты каждого поддерживаемого элемента.
ЧленDateTimeStyles |
Поведение |
---|---|
AdjustToUniversal |
input Анализирует и при необходимости преобразует его в формат UTC. Это эквивалентно анализу строки и последующему вызову DateTimeOffset.ToUniversalTime метода возвращаемого DateTimeOffset объекта. |
AssumeLocal | Если для сопоставленного элемента в formats не требуется, чтобы input он содержал значение смещения, возвращенный DateTimeOffset объект получает смещение местного часового пояса. Это значение по умолчанию. |
AssumeUniversal | Если для соответствующего элемента в formats не требуется, чтобы input он содержал значение смещения, возвращенный DateTimeOffset объект получает смещение в формате UTC (+00:00). |
AllowInnerWhite | Позволяет input включать внутренние пробелы, не указанные элементами в formats . Дополнительные пробелы могут отображаться между компонентами даты и времени и в отдельных компонентах (за исключением смещения) и игнорируются при анализе строки. |
AllowLeadingWhite | Позволяет input включать пробелы в начале, не указанные элементами в formats . Они игнорируются при анализе строки. |
AllowTrailingWhite | Позволяет input включать конечные пробелы, не указанные элементами в formats . Они игнорируются при анализе строки. |
AllowWhiteSpaces | Позволяет input включать начальные, конечные и внутренние пространства, не указанные элементами в formats . Все лишние пробелы, не указанные в сопоставленном элементе в , formats игнорируются при анализе строки. |
None | Указывает, что дополнительные пробелы не разрешены в input . Пробел должен отображаться точно так, как указано в определенном элементе в для formats успешного совпадения. Это поведение по умолчанию. |
RoundtripKind | Не оказывает никакого влияния, DateTimeOffset так как структура не включает Kind свойство . |
Примечания для тех, кто вызывает этот метод
В платформа .NET Framework 4 возвращает значение false
, TryParseExact если анализируемая строка содержит компонент часа и указатель AM/PM, которые не согласуются. В платформа .NET Framework 3.5 и более ранних версий конструктор AM/PM игнорируется.
Применяется к
TryParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTimeOffset)
- Исходный код:
- DateTimeOffset.cs
- Исходный код:
- DateTimeOffset.cs
- Исходный код:
- DateTimeOffset.cs
Преобразует представление даты и времени в диапазоне символов в его эквивалент DateTimeOffset, используя заданный формат, сведения о форматировании, связанные с языком и региональными параметрами, а также стиль. Формат отображения даты и времени должен полностью соответствовать заданному формату.
public:
static bool TryParseExact(ReadOnlySpan<char> input, ReadOnlySpan<char> format, IFormatProvider ^ formatProvider, System::Globalization::DateTimeStyles styles, [Runtime::InteropServices::Out] DateTimeOffset % result);
public static bool TryParseExact (ReadOnlySpan<char> input, ReadOnlySpan<char> format, IFormatProvider? formatProvider, System.Globalization.DateTimeStyles styles, out DateTimeOffset result);
public static bool TryParseExact (ReadOnlySpan<char> input, ReadOnlySpan<char> format, IFormatProvider formatProvider, System.Globalization.DateTimeStyles styles, out DateTimeOffset result);
static member TryParseExact : ReadOnlySpan<char> * ReadOnlySpan<char> * IFormatProvider * System.Globalization.DateTimeStyles * DateTimeOffset -> bool
Public Shared Function TryParseExact (input As ReadOnlySpan(Of Char), format As ReadOnlySpan(Of Char), formatProvider As IFormatProvider, styles As DateTimeStyles, ByRef result As DateTimeOffset) As Boolean
Параметры
- input
- ReadOnlySpan<Char>
Диапазон, содержащий символы, которые представляют преобразуемые дату и время.
- format
- ReadOnlySpan<Char>
Описатель формата, задающий требуемый формат input
.
- formatProvider
- IFormatProvider
Объект, который предоставляет сведения о форматировании параметра input
в зависимости от языка и региональных параметров.
- styles
- DateTimeStyles
Побитовая комбинация значений перечисления, которая показывает разрешенный формат параметра input
. Обычно указывается значение None.
- result
- DateTimeOffset
При возврате метода содержит DateTimeOffset эквивалент даты и времени input
, если преобразование выполнено успешно, или DateTimeOffset.MinValue , если преобразование завершилось сбоем. Преобразование не будет выполнено, если
Возвращаемое значение
Значение true
, если параметр input
успешно преобразован; в противном случае — значение false
.
Исключения
Параметр styles
включает неопределенное значение DateTimeStyles.
-или- Тип NoCurrentDateDefault не поддерживается.
-или- Параметр styles
содержит взаимоисключающие значения DateTimeStyles.
Комментарии
Эта перегрузка похожа на DateTimeOffset.ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) метод , за исключением того, что этот метод не создает исключение в случае сбоя преобразования. Он анализирует представление даты и времени, которые должны точно соответствовать шаблону, заданному параметром format
. Если input
не соответствует этому шаблону с некоторыми возможными вариантами пробелов, определенными параметром styles
, операция синтаксического анализа завершается ошибкой и метод возвращает false
.
Параметр format
представляет собой диапазон символов, содержащий один описатель стандартного формата или один или несколько описателей пользовательского формата, определяющих обязательный input
шаблон . Дополнительные сведения о допустимых кодах форматирования см. в разделах Строки стандартного формата даты и времени и Настраиваемые строки формата даты и времени. Если format
включает настраиваемые z
описатели формата , zz
или zzz
, указывающие, что смещение должно присутствовать в input
, это смещение должно включать либо отрицательный, либо положительный знак. Если знак отсутствует, операция синтаксического анализа завершается сбоем и метод возвращает false
.
Если format
требуется, чтобы input
содержать дату, но не время, результирующий DateTimeOffset объекту назначается время полуночи (0:00:00). Если format
требуется, чтобы input
содержать время, но не дату, результирующий DateTimeOffset объект назначается текущей дате в локальной системе. Если format
не требуется, чтобы input
он содержал смещение, смещение результирующего DateTimeOffset объекта зависит от значения styles
параметра . Если styles
включает AssumeLocal, смещение местного часового пояса назначается объекту DateTimeOffset . Если styles
параметр включает AssumeUniversal, объекту назначается смещение DateTimeOffset по времени в формате UTC или +00:00. Если ни значение не указано, используется смещение местного часового пояса.
Конкретные символы даты и времени и строки, используемые в , input
определяются параметром formatProvider
. То же самое относится и к точному шаблону , если format
является строкой описатель стандартного input
формата. Параметр formatProvider
может иметь один из следующих значений:
Объект CultureInfo , представляющий язык и региональные параметры на основе которого
input
интерпретируется. Объект DateTimeFormatInfo , возвращаемый свойством CultureInfo.DateTimeFormat , определяет символы и стандартные форматы, разрешенные вinput
.Объект DateTimeFormatInfo , определяющий формат данных даты и времени.
Если formatprovider
имеет значение null
, CultureInfo используется объект , соответствующий текущему языку и региональным параметрам.
Параметр styles
определяет, разрешено ли пробелы во входной строке, указывает, как анализируются строки без явного компонента смещения, и поддерживает преобразование в формате UTC в рамках операции синтаксического анализа. Поддерживаются все члены перечисления DateTimeStyles , кроме NoCurrentDateDefault. В следующей таблице перечислены результаты каждого поддерживаемого элемента.
ЧленDateTimeStyles |
Поведение |
---|---|
AdjustToUniversal |
input Анализирует и при необходимости преобразует его в формат UTC. Это эквивалентно синтаксическому анализу представления даты и времени, а затем вызову DateTimeOffset.ToUniversalTime метода возвращаемого DateTimeOffset объекта. |
AssumeLocal | Если format значение смещения не требуется input , возвращенный DateTimeOffset объект получает смещение местного часового пояса. Это поведение по умолчанию. |
AssumeUniversal | Если format значение смещения не требуется input , возвращенный DateTimeOffset объект получает смещение в формате UTC (+00:00). |
AllowInnerWhite | Позволяет input включать внутренние пробелы, не указанные форматом. Дополнительные пробелы могут отображаться между компонентами даты и времени и в отдельных компонентах, кроме смещения, и игнорируются при анализе строки. |
AllowLeadingWhite | Позволяет input включать пробелы в начале, не указанные параметром format . Они игнорируются при анализе строки. |
AllowTrailingWhite | Позволяет input включать конечные пробелы, не указанные параметром format . Они игнорируются при анализе строки. |
AllowWhiteSpaces | Позволяет input включать начальные, конечные и внутренние пространства, не указанные параметром format . Все лишние пробелы, не указанные в , format игнорируются при синтаксическом анализе строки. |
None | Указывает, что дополнительные пробелы не разрешены в input . Пробелы должны отображаться точно так, как указано в format . Это поведение по умолчанию. |
RoundtripKind | Не оказывает влияния, так как структура DateTimeOffset не включает Kind свойство . |
Применяется к
TryParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles, DateTimeOffset)
- Исходный код:
- DateTimeOffset.cs
- Исходный код:
- DateTimeOffset.cs
- Исходный код:
- DateTimeOffset.cs
Преобразует представление даты и времени в диапазоне символов в его эквивалент типа DateTimeOffset, используя указанные форматы, сведения о форматировании для определенного языка и региональных параметров, а также стиль. Формат представления даты и времени должен полностью соответствовать одному из заданных форматов.
public:
static bool TryParseExact(ReadOnlySpan<char> input, cli::array <System::String ^> ^ formats, IFormatProvider ^ formatProvider, System::Globalization::DateTimeStyles styles, [Runtime::InteropServices::Out] DateTimeOffset % result);
public static bool TryParseExact (ReadOnlySpan<char> input, string?[]? formats, IFormatProvider? formatProvider, System.Globalization.DateTimeStyles styles, out DateTimeOffset result);
public static bool TryParseExact (ReadOnlySpan<char> input, string[] formats, IFormatProvider formatProvider, System.Globalization.DateTimeStyles styles, out DateTimeOffset result);
static member TryParseExact : ReadOnlySpan<char> * string[] * IFormatProvider * System.Globalization.DateTimeStyles * DateTimeOffset -> bool
Public Shared Function TryParseExact (input As ReadOnlySpan(Of Char), formats As String(), formatProvider As IFormatProvider, styles As DateTimeStyles, ByRef result As DateTimeOffset) As Boolean
Параметры
- input
- ReadOnlySpan<Char>
Диапазон, содержащий символы, которые представляют преобразуемые дату и время.
- formats
- String[]
Массив стандартных или пользовательских строк формата, которые определяют допустимые форматы параметра input
.
- formatProvider
- IFormatProvider
Объект, который предоставляет сведения о форматировании параметра input
в зависимости от языка и региональных параметров.
- styles
- DateTimeStyles
Побитовая комбинация значений перечисления, которая показывает разрешенный формат параметра input
. Обычно указывается значение None.
- result
- DateTimeOffset
При возврате метода содержит DateTimeOffset эквивалент даты и времени input
, если преобразование выполнено успешно, или DateTimeOffset.MinValue , если преобразование завершилось сбоем. Преобразование не будет выполнено, если
Возвращаемое значение
Значение true
, если параметр input
успешно преобразован; в противном случае — значение false
.
Исключения
Параметр styles
включает неопределенное значение DateTimeStyles.
-или- Тип NoCurrentDateDefault не поддерживается.
-или- Параметр styles
содержит взаимоисключающие значения DateTimeStyles.
Комментарии
Этот метод анализирует строковое представление даты, которая соответствует любому из шаблонов, назначенных массиву formats
. Если input
не соответствует ни одному из этих шаблонов с вариациями, определенными параметром styles
, операция синтаксического анализа завершается ошибкой и метод возвращает false
. Помимо сравнения с input
несколькими строками, содержащими описатели формата, эта перегрузка DateTimeOffset.ParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles) ведет себя так же, как и метод .
Параметр formats
представляет собой массив строк, элементы которого содержат один описатель стандартного формата или один или несколько настраиваемых описателей формата, определяющих возможный input
шаблон . Дополнительные сведения о допустимых кодах форматирования см. в разделах Строки стандартного формата даты и времени и Настраиваемые строки формата даты и времени. Если соответствующий элемент в formats
содержит настраиваемые z
описатели формата , zz
или zzz
, указывающие, что смещение должно присутствовать в input
, это смещение должно включать либо отрицательный, либо положительный знак. Если знак отсутствует, операция синтаксического анализа завершается ошибкой и метод возвращает false
.
Важно!
formats
Использование параметра этой перегрузки для указания нескольких форматов может помочь уменьшить разочарование многих пользователей при вводе даты и времени. В частности, возможность определения нескольких шаблонов ввода позволяет приложению обрабатывать представления даты и времени, которые могут включать или отсутствовать начальные нули в месяцах, днях, часах, минутах и секундах. Пример демонстрирует это.
Если сопоставленный элемент в formats
требует, чтобы input
он содержал дату, но не время, результирующий DateTimeOffset объекту назначается время полуночи (0:00:00). Если сопоставленный элемент в formats
требует, чтобы входные данные содержали время, но не дату, результирующий DateTimeOffset объекту назначается текущая дата в локальной системе. Если сопоставленный элемент в formats
не требует, чтобы input
он содержал смещение, смещение результирующего DateTimeOffset объекта зависит от значения styles
параметра . Если styles
включает DateTimeStyles.AssumeLocal, смещение местного часового пояса назначается объекту DateTimeOffset . Если styles
параметр включает DateTimeStyles.AssumeUniversal, объекту назначается смещение DateTimeOffset по времени в формате UTC или +00:00. Если ни значение не указано, используется смещение местного часового пояса.
Конкретные символы даты и времени, используемые в , input
определяются параметром formatProvider
. То же самое верно и для точного шаблона , если соответствующий input
элемент является строкой описатель стандартного formats
формата. Параметр formatProvider
может иметь один из следующих значений:
Объект CultureInfo , представляющий язык и региональные параметры на основе которого
input
интерпретируется. Объект DateTimeFormatInfo , возвращаемый свойством CultureInfo.DateTimeFormat , определяет символы и форматирование вinput
.Объект DateTimeFormatInfo , определяющий формат данных даты и времени.
Если formatprovider
имеет значение null
, CultureInfo используется объект , соответствующий текущему языку и региональным параметрам.
Параметр styles
определяет, разрешено ли пробелы во входной строке, указывает, как анализируются строки без компонента явного смещения, и поддерживает преобразование в формате UTC в рамках операции синтаксического анализа. Поддерживаются все члены перечисления DateTimeStyles , кроме NoCurrentDateDefault. В следующей таблице перечислены результаты каждого поддерживаемого элемента.
ЧленDateTimeStyles |
Поведение |
---|---|
AdjustToUniversal |
input Анализирует и при необходимости преобразует его в формат UTC. Это эквивалентно синтаксическому анализу строки и последующему вызову DateTimeOffset.ToUniversalTime метода возвращаемого DateTimeOffset объекта. |
AssumeLocal | Если сопоставленный элемент в formats не требует, чтобы input он содержал значение смещения, возвращенный DateTimeOffset объект получает смещение местного часового пояса. Это значение по умолчанию. |
AssumeUniversal | Если сопоставленный элемент в formats не требует, чтобы input он содержал значение смещения, возвращенный DateTimeOffset объект получает смещение в формате UTC (+00:00). |
AllowInnerWhite | Позволяет input включать внутренние пробелы, не указанные элементами в formats . Дополнительные пробелы могут отображаться между компонентами даты и времени и в отдельных компонентах (за исключением смещения) и игнорируются при анализе строки. |
AllowLeadingWhite | Позволяет input включать пробелы в начале, не указанные элементами в formats . Они игнорируются при анализе строки. |
AllowTrailingWhite | Позволяет input включать конечные пробелы, не указанные элементами в formats . Они игнорируются при анализе строки. |
AllowWhiteSpaces | Позволяет input включать начальные, конечные и внутренние пространства, не указанные элементами в formats . Все лишние пробелы, не указанные в сопоставленном элементе в , formats игнорируются при анализе строки. |
None | Указывает, что дополнительные пробелы не разрешены в input . Пробелы должны отображаться точно так, как указано в определенном элементе в для formats успешного совпадения. Это поведение по умолчанию. |
RoundtripKind | Не оказывает влияния, DateTimeOffset так как структура не включает Kind свойство . |
Применяется к
TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTimeOffset)
- Исходный код:
- DateTimeOffset.cs
- Исходный код:
- DateTimeOffset.cs
- Исходный код:
- DateTimeOffset.cs
Преобразует заданное строковое представление даты и времени в его эквивалент DateTimeOffset, используя заданный формат, указанные сведения о форматировании, связанные с языком и региональными параметрами, а также стиль. Формат строкового представления должен полностью соответствовать заданному формату.
public:
static bool TryParseExact(System::String ^ input, System::String ^ format, IFormatProvider ^ formatProvider, System::Globalization::DateTimeStyles styles, [Runtime::InteropServices::Out] DateTimeOffset % result);
public static bool TryParseExact (string input, string format, IFormatProvider formatProvider, System.Globalization.DateTimeStyles styles, out DateTimeOffset result);
public static bool TryParseExact (string? input, string? format, IFormatProvider? formatProvider, System.Globalization.DateTimeStyles styles, out DateTimeOffset result);
static member TryParseExact : string * string * IFormatProvider * System.Globalization.DateTimeStyles * DateTimeOffset -> bool
Public Shared Function TryParseExact (input As String, format As String, formatProvider As IFormatProvider, styles As DateTimeStyles, ByRef result As DateTimeOffset) As Boolean
Параметры
- input
- String
Строка, содержащая дату и время, которые нужно преобразовать.
- format
- String
Описатель формата, задающий требуемый формат input
.
- formatProvider
- IFormatProvider
Объект, который предоставляет сведения о форматировании параметра input
в зависимости от языка и региональных параметров.
- styles
- DateTimeStyles
Побитовое сочетание значений перечисления, которое показывает разрешенный формат ввода. Обычно указывается значение None
.
- result
- DateTimeOffset
При возврате метода содержит DateTimeOffset эквивалент даты и времени input
, если преобразование выполнено успешно, или DateTimeOffset.MinValue, если преобразование завершилось сбоем. Преобразование завершается неудачно, если параметр input
имеет значение null
или не содержит допустимое строчное представление даты и времени в требуемом формате, заданном параметрами format
и provider
. Этот параметр передается неинициализированным.
Возвращаемое значение
Значение true
, если параметр input
успешно преобразован; в противном случае — значение false
.
Исключения
Параметр styles
включает неопределенное значение DateTimeStyles.
-или-
Тип NoCurrentDateDefault не поддерживается.
-или-
Параметр styles
содержит взаимоисключающие значения DateTimeStyles.
Примеры
В следующем примере используется TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTimeOffset) метод со стандартными и настраиваемыми описателями формата, инвариантными языками и региональными параметрами и различными DateTimeStyles значениями для анализа нескольких строк даты и времени.
string dateString, format;
DateTimeOffset result;
IFormatProvider provider = CultureInfo.InvariantCulture;
// Parse date-only value with invariant culture and assume time is UTC.
dateString = "06/15/2008";
format = "d";
if (DateTimeOffset.TryParseExact(dateString, format, provider,
DateTimeStyles.AssumeUniversal,
out result))
Console.WriteLine("'{0}' converts to {1}.", dateString, result.ToString());
else
Console.WriteLine("'{0}' is not in the correct format.", dateString);
// Parse date-only value with leading white space.
// Should return False because only trailing white space is
// specified in method call.
dateString = " 06/15/2008";
if (DateTimeOffset.TryParseExact(dateString, format, provider,
DateTimeStyles.AllowTrailingWhite,
out result))
Console.WriteLine("'{0}' converts to {1}.", dateString, result.ToString());
else
Console.WriteLine("'{0}' is not in the correct format.", dateString);
// Parse date and time value, and allow all white space.
dateString = " 06/15/ 2008 15:15 -05:00";
format = "MM/dd/yyyy H:mm zzz";
if (DateTimeOffset.TryParseExact(dateString, format, provider,
DateTimeStyles.AllowWhiteSpaces,
out result))
Console.WriteLine("'{0}' converts to {1}.", dateString, result.ToString());
else
Console.WriteLine("'{0}' is not in the correct format.", dateString);
// Parse date and time and convert to UTC.
dateString = " 06/15/2008 15:15:30 -05:00";
format = "MM/dd/yyyy H:mm:ss zzz";
if (DateTimeOffset.TryParseExact(dateString, format, provider,
DateTimeStyles.AllowWhiteSpaces |
DateTimeStyles.AdjustToUniversal,
out result))
Console.WriteLine("'{0}' converts to {1}.", dateString, result.ToString());
else
Console.WriteLine("'{0}' is not in the correct format.", dateString);
// The example displays the following output:
// '06/15/2008' converts to 6/15/2008 12:00:00 AM +00:00.
// ' 06/15/2008' is not in the correct format.
// ' 06/15/ 2008 15:15 -05:00' converts to 6/15/2008 3:15:00 PM -05:00.
// ' 06/15/2008 15:15:30 -05:00' converts to 6/15/2008 8:15:30 PM +00:00.
let provider = CultureInfo.InvariantCulture
// Parse date-only value with invariant culture and assume time is UTC.
let dateString = "06/15/2008"
let format = "d"
match DateTimeOffset.TryParseExact(dateString, format, provider, DateTimeStyles.AssumeUniversal) with
| true, result ->
printfn $"'{dateString}' converts to {result}."
| _ ->
printfn $"'{dateString}' is not in the correct format."
// Parse date-only value with leading white space.
// Should return False because only trailing white space is
// specified in method call.
let dateString = " 06/15/2008"
match DateTimeOffset.TryParseExact(dateString, format, provider, DateTimeStyles.AllowTrailingWhite) with
| true, result ->
printfn $"'{dateString}' converts to {result}."
| _ ->
printfn $"'{dateString}' is not in the correct format."
// Parse date and time value, and allow all white space.
let dateString = " 06/15/ 2008 15:15 -05:00"
let format = "MM/dd/yyyy H:mm zzz"
match DateTimeOffset.TryParseExact(dateString, format, provider, DateTimeStyles.AllowWhiteSpaces) with
| true, result ->
printfn $"'{dateString}' converts to {result}."
| _ ->
printfn $"'{dateString}' is not in the correct format."
// Parse date and time and convert to UTC.
let dateString = " 06/15/2008 15:15:30 -05:00"
let format = "MM/dd/yyyy H:mm:ss zzz"
match DateTimeOffset.TryParseExact(dateString, format, provider, DateTimeStyles.AllowWhiteSpaces ||| DateTimeStyles.AdjustToUniversal) with
| true, result ->
printfn $"'{dateString}' converts to {result}."
| _ ->
printfn $"'{dateString}' is not in the correct format."
// The example displays the following output:
// '06/15/2008' converts to 6/15/2008 12:00:00 AM +00:00.
// ' 06/15/2008' is not in the correct format.
// ' 06/15/ 2008 15:15 -05:00' converts to 6/15/2008 3:15:00 PM -05:00.
// ' 06/15/2008 15:15:30 -05:00' converts to 6/15/2008 8:15:30 PM +00:00.
Dim dateString, format As String
Dim result As DateTimeOffset
Dim provider As CultureInfo = CultureInfo.InvariantCulture
' Parse date-only value with invariant culture and assume time is UTC.
dateString = "06/15/2008"
format = "d"
If DateTimeOffset.TryParseExact(dateString, format, provider, _
DateTimeStyles.AssumeUniversal, _
result) Then
Console.WriteLine("'{0}' converts to {1}.", dateString, result.ToString())
Else
Console.WriteLine("'{0}' is not in the correct format.", dateString)
End If
' Parse date-only value with leading white space.
' Should return False because only trailing white space is
' specified in method call.
dateString = " 06/15/2008"
If DateTimeOffset.TryParseExact(dateString, format, provider, _
DateTimeStyles.AllowTrailingWhite, _
result) Then
Console.WriteLine("'{0}' converts to {1}.", dateString, result.ToString())
Else
Console.WriteLine("'{0}' is not in the correct format.", dateString)
End If
' Parse date and time value, and allow all white space.
dateString = " 06/15/ 2008 15:15 -05:00"
format = "MM/dd/yyyy H:mm zzz"
If DateTimeOffset.TryParseExact(dateString, format, provider, _
DateTimeStyles.AllowWhiteSpaces, _
result) Then
Console.WriteLine("'{0}' converts to {1}.", dateString, result.ToString())
Else
Console.WriteLine("'{0}' is not in the correct format.", dateString)
End If
' Parse date and time and convert to UTC.
dateString = " 06/15/2008 15:15:30 -05:00"
format = "MM/dd/yyyy H:mm:ss zzz"
If DateTimeOffset.TryParseExact(dateString, format, provider, _
DateTimeStyles.AllowWhiteSpaces Or _
DateTimeStyles.AdjustToUniversal, _
result) Then
Console.WriteLine("'{0}' converts to {1}.", dateString, result.ToString())
Else
Console.WriteLine("'{0}' is not in the correct format.", dateString)
End If
' The example displays the following output:
' '06/15/2008' converts to 6/15/2008 12:00:00 AM +00:00.
' ' 06/15/2008' is not in the correct format.
' ' 06/15/ 2008 15:15 -05:00' converts to 6/15/2008 3:15:00 PM -05:00.
' ' 06/15/2008 15:15:30 -05:00' converts to 6/15/2008 8:15:30 PM +00:00.
В следующем примере для анализа массива строк, которые должны соответствовать СТАНДАРТу ISO 8601, используются различные DateTimeStyles значения. Как показано в выходных данных примера, строки в правильном формате не удается проанализировать, если:
они содержат пробелы и соответствующий DateTimeStyles флаг (например DateTimeStyles.AllowWhiteSpaces , не был указан в вызове метода).
они содержат элементы даты и времени, которые находятся вне диапазона.
Предполагается, что строки, не указывающие смещение в формате UTC, имеют смещение местного часового пояса (в данном случае -07:00, отражающее смещение пояса тихоокеанского дневного времени), если DateTimeStyles.AssumeUniversal флаг не указан в вызове метода. В этом случае они считаются универсальным скоординированным временем.
open System
open System.Globalization
let parseWithISO8601 dateStrings styles =
printfn $"Parsing with {styles}:"
for dateString in dateStrings do
match DateTimeOffset.TryParseExact(dateString, "O", null, styles) with
| true, date ->
printfn $""" {dateString,-35} --> {date.ToString "yyyy-MM-dd HH:mm:ss.FF zzz"}"""
| _ ->
printfn $" Unable to convert '{dateString}'"
let dateStrings =
[ "2018-08-18T12:45:16.0000000Z"
"2018/08/18T12:45:16.0000000Z"
"2018-18-08T12:45:16.0000000Z"
"2018-08-18T12:45:16.0000000"
" 2018-08-18T12:45:16.0000000Z "
"2018-08-18T12:45:16.0000000+02:00"
"2018-08-18T12:45:16.0000000-07:00" ]
parseWithISO8601 dateStrings DateTimeStyles.None
printfn "\n-----\n"
parseWithISO8601 dateStrings DateTimeStyles.AllowWhiteSpaces
printfn "\n-----\n"
parseWithISO8601 dateStrings DateTimeStyles.AdjustToUniversal
printfn "\n-----\n"
parseWithISO8601 dateStrings DateTimeStyles.AssumeLocal
printfn "\n-----\n"
parseWithISO8601 dateStrings DateTimeStyles.AssumeUniversal
// The example displays the following output:
// Parsing with None:
// 2018-08-18T12:45:16.0000000Z --> 2018-08-18 12:45:16 +00:00
// Unable to convert '2018/08/18T12:45:16.0000000Z'
// Unable to convert '2018-18-08T12:45:16.0000000Z'
// 2018-08-18T12:45:16.0000000 --> 2018-08-18 12:45:16 -07:00
// Unable to convert ' 2018-08-18T12:45:16.0000000Z '
// 2018-08-18T12:45:16.0000000+02:00 --> 2018-08-18 12:45:16 +02:00
// 2018-08-18T12:45:16.0000000-07:00 --> 2018-08-18 12:45:16 -07:00
//
// -----
//
// Parsing with AllowWhiteSpaces:
// 2018-08-18T12:45:16.0000000Z --> 2018-08-18 12:45:16 +00:00
// Unable to convert '2018/08/18T12:45:16.0000000Z'
// Unable to convert '2018-18-08T12:45:16.0000000Z'
// 2018-08-18T12:45:16.0000000 --> 2018-08-18 12:45:16 -07:00
// 2018-08-18T12:45:16.0000000Z --> 2018-08-18 12:45:16 +00:00
// 2018-08-18T12:45:16.0000000+02:00 --> 2018-08-18 12:45:16 +02:00
// 2018-08-18T12:45:16.0000000-07:00 --> 2018-08-18 12:45:16 -07:00
//
// -----
//
// Parsing with AdjustToUniversal:
// 2018-08-18T12:45:16.0000000Z --> 2018-08-18 12:45:16 +00:00
// Unable to convert '2018/08/18T12:45:16.0000000Z'
// Unable to convert '2018-18-08T12:45:16.0000000Z'
// 2018-08-18T12:45:16.0000000 --> 2018-08-18 19:45:16 +00:00
// Unable to convert ' 2018-08-18T12:45:16.0000000Z '
// 2018-08-18T12:45:16.0000000+02:00 --> 2018-08-18 10:45:16 +00:00
// 2018-08-18T12:45:16.0000000-07:00 --> 2018-08-18 19:45:16 +00:00
//
// -----
//
// Parsing with AssumeLocal:
// 2018-08-18T12:45:16.0000000Z --> 2018-08-18 12:45:16 +00:00
// Unable to convert '2018/08/18T12:45:16.0000000Z'
// Unable to convert '2018-18-08T12:45:16.0000000Z'
// 2018-08-18T12:45:16.0000000 --> 2018-08-18 12:45:16 -07:00
// Unable to convert ' 2018-08-18T12:45:16.0000000Z '
// 2018-08-18T12:45:16.0000000+02:00 --> 2018-08-18 12:45:16 +02:00
// 2018-08-18T12:45:16.0000000-07:00 --> 2018-08-18 12:45:16 -07:00
//
// -----
//
// Parsing with AssumeUniversal:
// 2018-08-18T12:45:16.0000000Z --> 2018-08-18 12:45:16 +00:00
// Unable to convert '2018/08/18T12:45:16.0000000Z'
// Unable to convert '2018-18-08T12:45:16.0000000Z'
// 2018-08-18T12:45:16.0000000 --> 2018-08-18 12:45:16 +00:00
// Unable to convert ' 2018-08-18T12:45:16.0000000Z '
// 2018-08-18T12:45:16.0000000+02:00 --> 2018-08-18 12:45:16 +02:00
// 2018-08-18T12:45:16.0000000-07:00 --> 2018-08-18 12:45:16 -07:00
using System;
using System.Globalization;
public class Example
{
public static void Main()
{
string[] dateStrings = { "2018-08-18T12:45:16.0000000Z",
"2018/08/18T12:45:16.0000000Z",
"2018-18-08T12:45:16.0000000Z",
"2018-08-18T12:45:16.0000000",
" 2018-08-18T12:45:16.0000000Z ",
"2018-08-18T12:45:16.0000000+02:00",
"2018-08-18T12:45:16.0000000-07:00" };
ParseWithISO8601(dateStrings, DateTimeStyles.None);
Console.WriteLine("\n-----\n");
ParseWithISO8601(dateStrings, DateTimeStyles.AllowWhiteSpaces);
Console.WriteLine("\n-----\n");
ParseWithISO8601(dateStrings, DateTimeStyles.AdjustToUniversal);
Console.WriteLine("\n-----\n");
ParseWithISO8601(dateStrings, DateTimeStyles.AssumeLocal);
Console.WriteLine("\n-----\n");
ParseWithISO8601(dateStrings, DateTimeStyles.AssumeUniversal); }
private static void ParseWithISO8601(string[] dateStrings, DateTimeStyles styles)
{
Console.WriteLine($"Parsing with {styles}:");
DateTimeOffset date;
foreach (var dateString in dateStrings)
{
if (DateTimeOffset.TryParseExact(dateString, "O", null, styles, out date))
{
Console.WriteLine($" {dateString,-35} --> {date:yyyy-MM-dd HH:mm:ss.FF zzz}");
}
else
{
Console.WriteLine($" Unable to convert '{dateString}'");
}
}
}
}
// The example displays the following output:
// Parsing with None:
// 2018-08-18T12:45:16.0000000Z --> 2018-08-18 12:45:16 +00:00
// Unable to convert '2018/08/18T12:45:16.0000000Z'
// Unable to convert '2018-18-08T12:45:16.0000000Z'
// 2018-08-18T12:45:16.0000000 --> 2018-08-18 12:45:16 -07:00
// Unable to convert ' 2018-08-18T12:45:16.0000000Z '
// 2018-08-18T12:45:16.0000000+02:00 --> 2018-08-18 12:45:16 +02:00
// 2018-08-18T12:45:16.0000000-07:00 --> 2018-08-18 12:45:16 -07:00
//
// -----
//
// Parsing with AllowWhiteSpaces:
// 2018-08-18T12:45:16.0000000Z --> 2018-08-18 12:45:16 +00:00
// Unable to convert '2018/08/18T12:45:16.0000000Z'
// Unable to convert '2018-18-08T12:45:16.0000000Z'
// 2018-08-18T12:45:16.0000000 --> 2018-08-18 12:45:16 -07:00
// 2018-08-18T12:45:16.0000000Z --> 2018-08-18 12:45:16 +00:00
// 2018-08-18T12:45:16.0000000+02:00 --> 2018-08-18 12:45:16 +02:00
// 2018-08-18T12:45:16.0000000-07:00 --> 2018-08-18 12:45:16 -07:00
//
// -----
//
// Parsing with AdjustToUniversal:
// 2018-08-18T12:45:16.0000000Z --> 2018-08-18 12:45:16 +00:00
// Unable to convert '2018/08/18T12:45:16.0000000Z'
// Unable to convert '2018-18-08T12:45:16.0000000Z'
// 2018-08-18T12:45:16.0000000 --> 2018-08-18 19:45:16 +00:00
// Unable to convert ' 2018-08-18T12:45:16.0000000Z '
// 2018-08-18T12:45:16.0000000+02:00 --> 2018-08-18 10:45:16 +00:00
// 2018-08-18T12:45:16.0000000-07:00 --> 2018-08-18 19:45:16 +00:00
//
// -----
//
// Parsing with AssumeLocal:
// 2018-08-18T12:45:16.0000000Z --> 2018-08-18 12:45:16 +00:00
// Unable to convert '2018/08/18T12:45:16.0000000Z'
// Unable to convert '2018-18-08T12:45:16.0000000Z'
// 2018-08-18T12:45:16.0000000 --> 2018-08-18 12:45:16 -07:00
// Unable to convert ' 2018-08-18T12:45:16.0000000Z '
// 2018-08-18T12:45:16.0000000+02:00 --> 2018-08-18 12:45:16 +02:00
// 2018-08-18T12:45:16.0000000-07:00 --> 2018-08-18 12:45:16 -07:00
//
// -----
//
// Parsing with AssumeUniversal:
// 2018-08-18T12:45:16.0000000Z --> 2018-08-18 12:45:16 +00:00
// Unable to convert '2018/08/18T12:45:16.0000000Z'
// Unable to convert '2018-18-08T12:45:16.0000000Z'
// 2018-08-18T12:45:16.0000000 --> 2018-08-18 12:45:16 +00:00
// Unable to convert ' 2018-08-18T12:45:16.0000000Z '
// 2018-08-18T12:45:16.0000000+02:00 --> 2018-08-18 12:45:16 +02:00
// 2018-08-18T12:45:16.0000000-07:00 --> 2018-08-18 12:45:16 -07:00
Imports System.Globalization
Public Module Example
Public Sub Main()
Dim dateStrings() = { "2018-08-18T12:45:16.0000000Z",
"2018/08/18T12:45:16.0000000Z",
"2018-18-08T12:45:16.0000000Z",
"2018-08-18T12:45:16.0000000",
" 2018-08-18T12:45:16.0000000Z ",
"2018-08-18T12:45:16.0000000+02:00",
"2018-08-18T12:45:16.0000000-07:00" }
ParseWithISO8601(dateStrings, DateTimeStyles.None)
Console.WriteLine($"{vbCrLf}-----{vbCrLf}")
ParseWithISO8601(dateStrings, DateTimeStyles.AllowWhiteSpaces)
Console.WriteLine($"{vbCrLf}-----{vbCrLf}")
ParseWithISO8601(dateStrings, DateTimeStyles.AdjustToUniversal)
Console.WriteLine($"{vbCrLf}-----{vbCrLf}")
ParseWithISO8601(dateStrings, DateTimeStyles.AssumeLocal)
Console.WriteLine($"{vbCrLf}-----{vbCrLf}")
ParseWithISO8601(dateStrings, DateTimeStyles.AssumeUniversal)
End Sub
Private Sub ParseWithISO8601(dateStrings() As String, styles As DateTimeStyles)
Console.WriteLine($"Parsing with {styles}:")
Dim dat As DateTimeOffset
For Each dateStr In dateStrings
If DateTimeOffset.TryParseExact(dateStr, "O", Nothing, styles, dat) Then
Console.WriteLine($" {dateStr,-35} --> {dat:yyyy-MM-dd HH:mm:ss.FF zzz}")
Else
Console.WriteLine($" Unable to convert '{dateStr}'")
End If
Next
End Sub
End Module
' The example displays the following output:
' Parsing with None:
' 2018-08-18T12:45:16.0000000Z --> 2018-08-18 12:45:16 +00:00
' Unable to convert '2018/08/18T12:45:16.0000000Z'
' Unable to convert '2018-18-08T12:45:16.0000000Z'
' 2018-08-18T12:45:16.0000000 --> 2018-08-18 12:45:16 -07:00
' Unable to convert ' 2018-08-18T12:45:16.0000000Z '
' 2018-08-18T12:45:16.0000000+02:00 --> 2018-08-18 12:45:16 +02:00
' 2018-08-18T12:45:16.0000000-07:00 --> 2018-08-18 12:45:16 -07:00
'
' -----
'
' Parsing with AllowWhiteSpaces:
' 2018-08-18T12:45:16.0000000Z --> 2018-08-18 12:45:16 +00:00
' Unable to convert '2018/08/18T12:45:16.0000000Z'
' Unable to convert '2018-18-08T12:45:16.0000000Z'
' 2018-08-18T12:45:16.0000000 --> 2018-08-18 12:45:16 -07:00
' 2018-08-18T12:45:16.0000000Z --> 2018-08-18 12:45:16 +00:00
' 2018-08-18T12:45:16.0000000+02:00 --> 2018-08-18 12:45:16 +02:00
' 2018-08-18T12:45:16.0000000-07:00 --> 2018-08-18 12:45:16 -07:00
'
' -----
'
' Parsing with AdjustToUniversal:
' 2018-08-18T12:45:16.0000000Z --> 2018-08-18 12:45:16 +00:00
' Unable to convert '2018/08/18T12:45:16.0000000Z'
' Unable to convert '2018-18-08T12:45:16.0000000Z'
' 2018-08-18T12:45:16.0000000 --> 2018-08-18 19:45:16 +00:00
' Unable to convert ' 2018-08-18T12:45:16.0000000Z '
' 2018-08-18T12:45:16.0000000+02:00 --> 2018-08-18 10:45:16 +00:00
' 2018-08-18T12:45:16.0000000-07:00 --> 2018-08-18 19:45:16 +00:00
'
' -----
'
' Parsing with AssumeLocal:
' 2018-08-18T12:45:16.0000000Z --> 2018-08-18 12:45:16 +00:00
' Unable to convert '2018/08/18T12:45:16.0000000Z'
' Unable to convert '2018-18-08T12:45:16.0000000Z'
' 2018-08-18T12:45:16.0000000 --> 2018-08-18 12:45:16 -07:00
' Unable to convert ' 2018-08-18T12:45:16.0000000Z '
' 2018-08-18T12:45:16.0000000+02:00 --> 2018-08-18 12:45:16 +02:00
' 2018-08-18T12:45:16.0000000-07:00 --> 2018-08-18 12:45:16 -07:00
'
' -----
'
' Parsing with AssumeUniversal:
' 2018-08-18T12:45:16.0000000Z --> 2018-08-18 12:45:16 +00:00
' Unable to convert '2018/08/18T12:45:16.0000000Z'
' Unable to convert '2018-18-08T12:45:16.0000000Z'
' 2018-08-18T12:45:16.0000000 --> 2018-08-18 12:45:16 +00:00
' Unable to convert ' 2018-08-18T12:45:16.0000000Z '
' 2018-08-18T12:45:16.0000000+02:00 --> 2018-08-18 12:45:16 +02:00
' 2018-08-18T12:45:16.0000000-07:00 --> 2018-08-18 12:45:16 -07:00
Комментарии
Эта перегрузка метода похожа на TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTimeOffset)DateTimeOffset.ParseExact(String, String, IFormatProvider, DateTimeStyles) метод , за исключением того, что этот метод не создает исключение в случае сбоя преобразования. Он анализирует строковое представление даты и времени, которые должны точно соответствовать шаблону, заданному параметром format
.
input
Если строка не соответствует этому шаблону с некоторыми возможными вариантами пробелов, определенными параметром styles
, операция синтаксического анализа завершается ошибкой и метод возвращает false
.
Параметр format
представляет собой строку, содержащую один описатель стандартного формата или один или несколько настраиваемых описателей формата, которые определяют обязательный input
шаблон . Дополнительные сведения о допустимых кодах форматирования см. в разделах Строки стандартного формата даты и времени и Настраиваемые строки формата даты и времени. Если format
включает настраиваемые z
описатели формата , zz
или zzz
, указывающие, что смещение должно присутствовать в input
, это смещение должно включать либо отрицательный, либо положительный знак. Если знак отсутствует, операция синтаксического анализа завершается сбоем и метод возвращает false
.
Если format
требуется, чтобы input
содержать дату, но не время, результирующий DateTimeOffset объекту назначается время полуночи (0:00:00). Если format
требуется, чтобы input
содержать время, но не дату, результирующий DateTimeOffset объект назначается текущей дате в локальной системе. Если format
не требуется, чтобы input
он содержал смещение, смещение результирующего DateTimeOffset объекта зависит от значения styles
параметра . Если styles
включает AssumeLocal, смещение местного часового пояса назначается объекту DateTimeOffset . Если styles
параметр включает AssumeUniversal, объекту назначается смещение DateTimeOffset по времени в формате UTC или +00:00. Если ни значение не указано, используется смещение местного часового пояса.
Конкретные символы даты и времени и строки, используемые в , input
определяются параметром formatProvider
. То же самое относится и к точному шаблону , если format
является строкой описатель стандартного input
формата. Параметр formatProvider
может иметь один из следующих значений:
Объект CultureInfo , представляющий язык и региональные параметры на основе которого
input
интерпретируется. Объект DateTimeFormatInfo , возвращаемый свойством CultureInfo.DateTimeFormat , определяет символы и стандартные форматы, разрешенные вinput
.Объект DateTimeFormatInfo , определяющий формат данных даты и времени.
Если formatprovider
имеет значение null
, CultureInfo используется объект , соответствующий текущему языку и региональным параметрам.
Параметр styles
определяет, разрешено ли пробелы во входной строке, указывает, как анализируются строки без явного компонента смещения, и поддерживает преобразование в формате UTC в рамках операции синтаксического анализа. Поддерживаются все члены перечисления DateTimeStyles , кроме NoCurrentDateDefault. В следующей таблице перечислены результаты каждого поддерживаемого элемента.
ЧленDateTimeStyles |
Поведение |
---|---|
AdjustToUniversal |
input Анализирует и при необходимости преобразует его в формат UTC. Это эквивалентно синтаксическому анализу строки и последующему вызову DateTimeOffset.ToUniversalTime метода возвращаемого DateTimeOffset объекта. |
AssumeLocal | Если format значение смещения не требуется input , возвращенный DateTimeOffset объект получает смещение местного часового пояса. Это поведение по умолчанию. |
AssumeUniversal | Если format значение смещения не требуется input , возвращенный DateTimeOffset объект получает смещение в формате UTC (+00:00). |
AllowInnerWhite | Позволяет input включать внутренние пробелы, не указанные форматом. Дополнительные пробелы могут отображаться между компонентами даты и времени и в отдельных компонентах, кроме смещения, и игнорируются при анализе строки. |
AllowLeadingWhite | Позволяет input включать пробелы в начале, не указанные параметром format . Они игнорируются при анализе строки. |
AllowTrailingWhite | Позволяет input включать конечные пробелы, не указанные параметром format . Они игнорируются при анализе строки. |
AllowWhiteSpaces | Позволяет input включать начальные, конечные и внутренние пространства, не указанные параметром format . Все лишние пробелы, не указанные в , format игнорируются при синтаксическом анализе строки. |
None | Указывает, что дополнительные пробелы не разрешены в input . Пробелы должны отображаться точно так, как указано в format . Это поведение по умолчанию. |
RoundtripKind | Не оказывает влияния, так как структура DateTimeOffset не включает Kind свойство . |
Примечания для тех, кто вызывает этот метод
В платформа .NET Framework 4 возвращает значение false
, TryParseExact если анализируемая строка содержит компонент часа и конструктор AM/PM, которые не согласуются. В платформа .NET Framework 3.5 и более ранних версиях конструктор AM/PM игнорируется.
См. также раздел
Применяется к
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по