DateTimeOffset.TryParseExact Metode

Definisi

Mengonversi representasi string yang ditentukan dari tanggal dan waktu menjadi DateTimeOffset setara. Format representasi string harus sama persis dengan format yang ditentukan.

Overload

TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTimeOffset)

Mengonversi representasi string yang ditentukan dari tanggal dan waktu ke DateTimeOffset yang setara menggunakan array format yang ditentukan, informasi format khusus budaya, dan gaya. Format representasi string harus sama persis dengan salah satu format yang ditentukan.

TryParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTimeOffset)

Mengonversi representasi tanggal dan waktu dalam rentang karakter menjadi DateTimeOffset setara menggunakan format yang ditentukan, informasi format khusus budaya, dan gaya. Format representasi tanggal dan waktu harus sama persis dengan format yang ditentukan.

TryParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles, DateTimeOffset)

Mengonversi representasi tanggal dan waktu dalam rentang karakter menjadi DateTimeOffset setara menggunakan format yang ditentukan, informasi format khusus budaya, dan gaya. Format representasi tanggal dan waktu harus sama persis dengan salah satu format yang ditentukan.

TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTimeOffset)

Mengonversi representasi string yang ditentukan dari tanggal dan waktu ke DateTimeOffset yang setara menggunakan format yang ditentukan, informasi format khusus budaya, dan gaya. Format representasi string harus sama persis dengan format yang ditentukan.

TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTimeOffset)

Sumber:
DateTimeOffset.cs
Sumber:
DateTimeOffset.cs
Sumber:
DateTimeOffset.cs

Mengonversi representasi string yang ditentukan dari tanggal dan waktu ke DateTimeOffset yang setara menggunakan array format yang ditentukan, informasi format khusus budaya, dan gaya. Format representasi string harus sama persis dengan salah satu format yang ditentukan.

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

Parameter

input
String

String yang berisi tanggal dan waktu untuk dikonversi.

formats
String[]

Array yang menentukan format yang diharapkan dari input.

formatProvider
IFormatProvider

Objek yang memasok informasi pemformatan khusus budaya tentang input.

styles
DateTimeStyles

Kombinasi bitwise dari nilai enumerasi yang menunjukkan format input yang diizinkan. Nilai umum yang ditentukan adalah None.

result
DateTimeOffset

Ketika metode kembali, berisi DateTimeOffset yang setara dengan tanggal dan waktu input, jika konversi berhasil, atau DateTimeOffset.MinValue, jika konversi gagal. Konversi gagal jika input tidak berisi representasi string yang valid dari tanggal dan waktu, atau tidak berisi tanggal dan waktu dalam format yang diharapkan yang ditentukan oleh format, atau jika formats adalah null. Parameter ini diteruskan tanpa diinisialisasi.

Mengembalikan

trueinput jika parameter berhasil dikonversi; jika tidak, false.

Pengecualian

styles menyertakan nilai yang tidak ditentukan DateTimeStyles .

-atau-

NoCurrentDateDefault tidak didukung.

-atau-

styles mencakup nilai yang saling eksklusif DateTimeStyles .

Contoh

Contoh berikut menentukan beberapa format input untuk representasi string dari nilai tanggal dan waktu dan offset, lalu meneruskan string yang dimasukkan oleh pengguna ke TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTimeOffset) metode .

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

Keterangan

Metode ini TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTimeOffset) menguraikan representasi string dari tanggal yang cocok dengan salah satu pola yang ditetapkan ke formats array. input Jika string tidak cocok dengan salah satu pola ini dengan variasi apa pun yang ditentukan oleh styles parameter, operasi penguraian gagal dan metode mengembalikan false. Selain membandingkan input dengan beberapa string yang berisi penentu format, kelebihan beban ini berperilaku identik dengan DateTimeOffset.ParseExact(String, String[], IFormatProvider, DateTimeStyles) metode .

Parameter formats adalah array string yang elemennya berisi penentu format standar tunggal atau satu atau beberapa penentu format kustom yang menentukan pola yang mungkin dari input. Untuk detail tentang kode pemformatan yang valid, lihat String Format Tanggal dan Waktu Standar dan String Format Tanggal dan Waktu Kustom. Jika elemen yang cocok dalam formats menyertakan z, , zzatau zzz penentu format kustom untuk menunjukkan bahwa offset harus ada di input, offset tersebut harus menyertakan tanda negatif atau tanda positif. Jika tanda hilang, operasi penguraian gagal dan metode mengembalikan false.

Penting

formats Menggunakan parameter kelebihan beban ini untuk menentukan beberapa format dapat membantu mengurangi frustrasi yang dialami banyak pengguna saat mereka memasukkan tanggal dan waktu. Secara khusus, kemampuan untuk menentukan beberapa pola input memungkinkan aplikasi untuk menangani representasi tanggal dan waktu yang dapat menyertakan atau tidak memiliki nol di depan dalam bulan, hari, jam, menit, dan detik. Contohnya memberikan ilustrasi tentang hal ini.

Jika elemen yang cocok di formats mengharuskan yang input berisi tanggal tetapi bukan waktu, objek yang dihasilkan DateTimeOffset ditetapkan waktu tengah malam (0:00:00). Jika elemen yang cocok di formats mengharuskan input tersebut berisi waktu tetapi bukan tanggal, objek yang dihasilkan DateTimeOffset ditetapkan tanggal saat ini pada sistem lokal. Jika elemen yang cocok di formats tidak memerlukan yang input berisi offset, offset objek yang dihasilkan DateTimeOffset tergantung pada nilai styles parameter. Jika styles menyertakan AssumeLocal, offset zona waktu lokal ditetapkan ke DateTimeOffset objek . Jika styles menyertakan AssumeUniversal, offset Waktu Universal Terkoordinasi (UTC), atau +00:00, ditetapkan ke DateTimeOffset objek . Jika tidak ada nilai yang ditentukan, offset zona waktu lokal akan digunakan.

Simbol dan string tanggal dan waktu tertentu yang digunakan ditentukan input oleh formatProvider parameter . Hal yang sama berlaku untuk pola input yang tepat jika elemen formats yang cocok adalah string penentu format standar. Parameter formatProvider dapat berupa salah satu hal berikut:

Jika formatprovider adalah null, CultureInfo objek yang sesuai dengan budaya saat ini digunakan.

Parameter styles menentukan apakah spasi putih diizinkan dalam string input, menunjukkan bagaimana string tanpa komponen offset eksplisit diurai, dan mendukung konversi UTC sebagai bagian dari operasi penguraian. Semua anggota DateTimeStyles enumerasi didukung kecuali NoCurrentDateDefault. Tabel berikut ini mencantumkan efek dari setiap anggota yang didukung.

DateTimeStyles anggota Aktivitas
AdjustToUniversal Mengurai input dan, jika perlu, mengonversinya menjadi UTC. Ini setara dengan mengurai string, dan kemudian memanggil DateTimeOffset.ToUniversalTime metode objek yang dikembalikan DateTimeOffset .
AssumeLocal Jika elemen yang cocok di formats tidak memerlukan yang input berisi nilai offset, objek yang dikembalikan DateTimeOffset diberikan offset zona waktu lokal. Ini adalah nilai default.
AssumeUniversal Jika elemen yang cocok di formats tidak memerlukan yang input berisi nilai offset, objek yang dikembalikan DateTimeOffset diberikan offset UTC (+00:00).
AllowInnerWhite Memungkinkan input untuk menyertakan ruang putih dalam yang tidak ditentukan oleh elemen di formats. Ruang kosong ekstra dapat muncul antara komponen tanggal dan waktu dan dalam komponen individual (kecuali untuk offset) dan diabaikan saat mengurai string.
AllowLeadingWhite Memungkinkan input untuk menyertakan spasi di depan yang tidak ditentukan oleh elemen di formats. Ini diabaikan saat mengurai string.
AllowTrailingWhite Memungkinkan input untuk menyertakan spasi berikutnya yang tidak ditentukan oleh elemen di formats. Ini diabaikan saat mengurai string.
AllowWhiteSpaces Memungkinkan input untuk menyertakan spasi di depan, di belakang, dan dalam yang tidak ditentukan oleh elemen di formats. Semua karakter spasi putih ekstra yang tidak ditentukan dalam elemen yang cocok di formats diabaikan saat mengurai string.
None Menunjukkan bahwa ruang kosong tambahan tidak diizinkan di input. Spasi kosong harus muncul persis seperti yang ditentukan dalam elemen tertentu agar formats kecocokan berhasil terjadi. Ini adalah perilaku default.
RoundtripKind Tidak berpengaruh karena DateTimeOffset struktur tidak menyertakan Kind properti .

Catatan Bagi Pemanggil

Dalam .NET Framework 4, TryParseExact mengembalikan false jika string yang akan diurai berisi komponen jam dan penunjuk AM/PM yang tidak dalam perjanjian. Dalam .NET Framework 3.5 dan versi yang lebih lama, penunjuk AM/PM diabaikan.

Berlaku untuk

TryParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTimeOffset)

Sumber:
DateTimeOffset.cs
Sumber:
DateTimeOffset.cs
Sumber:
DateTimeOffset.cs

Mengonversi representasi tanggal dan waktu dalam rentang karakter menjadi DateTimeOffset setara menggunakan format yang ditentukan, informasi format khusus budaya, dan gaya. Format representasi tanggal dan waktu harus sama persis dengan format yang ditentukan.

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

Parameter

input
ReadOnlySpan<Char>

Rentang yang berisi karakter yang mewakili tanggal dan waktu untuk dikonversi.

format
ReadOnlySpan<Char>

Penentu format yang menentukan format yang diperlukan dari input.

formatProvider
IFormatProvider

Objek yang memasok informasi pemformatan khusus budaya tentang input.

styles
DateTimeStyles

Kombinasi bitwise dari nilai enumerasi yang menunjukkan format yang diizinkan dari input. Nilai umum yang ditentukan adalah None.

result
DateTimeOffset

Ketika metode kembali, berisi DateTimeOffset yang setara dengan tanggal dan waktu input, jika konversi berhasil, atau DateTimeOffset.MinValue jika konversi gagal. Konversi gagal jika

Mengembalikan

true jika parameter berhasil dikonversi input ; jika tidak, false.

Pengecualian

styles menyertakan nilai yang tidak ditentukan DateTimeStyles . -or- NoCurrentDateDefault tidak didukung. -atau- styles mencakup nilai yang saling eksklusif DateTimeStyles .

Keterangan

Kelebihan beban ini seperti DateTimeOffset.ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) metode , kecuali bahwa metode ini tidak memberikan pengecualian jika konversi gagal. Ini mengurai representasi tanggal dan waktu yang harus sama persis dengan pola yang ditentukan oleh format parameter. Jika input tidak cocok dengan pola ini, dengan beberapa variasi yang mungkin dalam spasi putih yang ditentukan oleh styles parameter, operasi penguraian gagal dan metode mengembalikan false.

Parameter format adalah rentang karakter yang berisi penentu format standar tunggal atau satu atau beberapa penentu format kustom yang menentukan pola yang diperlukan dari input. Untuk detail tentang kode pemformatan yang valid, lihat String Format Tanggal dan Waktu Standar dan String Format Tanggal dan Waktu Kustom. Jika format menyertakan penentu zformat kustom , zz, atau zzz untuk menunjukkan bahwa offset harus ada di input, offset tersebut harus menyertakan tanda negatif atau tanda positif. Jika tanda hilang, operasi penguraian gagal dan metode mengembalikan false.

Jika format mengharuskan yang input berisi tanggal tetapi bukan waktu, objek yang dihasilkan DateTimeOffset ditetapkan waktu tengah malam (0:00:00). Jika format mengharuskan berisi input waktu tetapi bukan tanggal, objek yang dihasilkan DateTimeOffset diberi tanggal saat ini pada sistem lokal. Jika format tidak mengharuskan berisi input offset, offset objek yang dihasilkan DateTimeOffset tergantung pada nilai styles parameter. Jika styles termasuk AssumeLocal, offset zona waktu lokal ditetapkan ke DateTimeOffset objek . Jika styles menyertakan AssumeUniversal, offset Waktu Universal Terkoordinasi (UTC), atau +00:00, ditetapkan ke DateTimeOffset objek . Jika tidak ada nilai yang ditentukan, offset zona waktu lokal akan digunakan.

Simbol dan string tanggal dan waktu tertentu yang digunakan ditentukan input oleh formatProvider parameter . Hal yang sama berlaku untuk pola input yang tepat jika format adalah string penentu format standar. Parameter formatProvider dapat berupa salah satu dari yang berikut:

Jika formatprovider adalah null, CultureInfo objek yang sesuai dengan budaya saat ini digunakan.

Parameter styles menentukan apakah spasi kosong diizinkan dalam string input, menunjukkan bagaimana string tanpa komponen offset eksplisit diurai, dan mendukung konversi UTC sebagai bagian dari operasi penguraian. Semua anggota DateTimeStyles enumerasi didukung kecuali NoCurrentDateDefault. Tabel berikut ini mencantumkan efek dari setiap anggota yang didukung.

DateTimeStyles anggota Aktivitas
AdjustToUniversal Mengurai input dan, jika perlu, mengonversinya ke UTC. Ini setara dengan mengurai representasi tanggal dan waktu, lalu memanggil DateTimeOffset.ToUniversalTime metode objek yang dikembalikan DateTimeOffset .
AssumeLocal Jika format tidak mengharuskan berisi input nilai offset, objek yang dikembalikan DateTimeOffset diberikan offset zona waktu lokal. Ini adalah perilaku default.
AssumeUniversal Jika format tidak memerlukan yang input berisi nilai offset, objek yang dikembalikan DateTimeOffset diberikan offset UTC (+00:00).
AllowInnerWhite Memungkinkan input untuk menyertakan spasi kosong dalam yang tidak ditentukan oleh format. Ruang kosong ekstra dapat muncul antara komponen tanggal dan waktu dan dalam komponen individual, selain offset, dan diabaikan saat mengurai string.
AllowLeadingWhite Memungkinkan input untuk menyertakan spasi di depan yang tidak ditentukan oleh format. Ini diabaikan saat mengurai string.
AllowTrailingWhite Memungkinkan input untuk menyertakan spasi berikutnya yang tidak ditentukan oleh format. Ini diabaikan saat mengurai string.
AllowWhiteSpaces Memungkinkan input untuk menyertakan spasi di depan, di belakang, dan dalam yang tidak ditentukan oleh format. Semua karakter spasi kosong ekstra yang tidak ditentukan di format diabaikan saat mengurai string.
None Menunjukkan bahwa ruang kosong tambahan tidak diizinkan di input. Spasi kosong harus muncul persis seperti yang ditentukan dalam format. Ini adalah perilaku default.
RoundtripKind Tidak berpengaruh, karena DateTimeOffset struktur tidak menyertakan Kind properti .

Berlaku untuk

TryParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles, DateTimeOffset)

Sumber:
DateTimeOffset.cs
Sumber:
DateTimeOffset.cs
Sumber:
DateTimeOffset.cs

Mengonversi representasi tanggal dan waktu dalam rentang karakter menjadi DateTimeOffset setara menggunakan format yang ditentukan, informasi format khusus budaya, dan gaya. Format representasi tanggal dan waktu harus sama persis dengan salah satu format yang ditentukan.

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

Parameter

input
ReadOnlySpan<Char>

Rentang yang berisi karakter yang mewakili tanggal dan waktu untuk dikonversi.

formats
String[]

Array string format standar atau kustom yang menentukan format yang dapat diterima dari input.

formatProvider
IFormatProvider

Objek yang memasok informasi pemformatan khusus budaya tentang input.

styles
DateTimeStyles

Kombinasi bitwise dari nilai enumerasi yang menunjukkan format yang diizinkan dari input. Nilai umum yang akan ditentukan adalah None.

result
DateTimeOffset

Ketika metode kembali, berisi DateTimeOffset yang setara dengan tanggal dan waktu input, jika konversi berhasil, atau DateTimeOffset.MinValue jika konversi gagal. Konversi gagal jika

Mengembalikan

true jika parameter berhasil dikonversi input ; jika tidak, false.

Pengecualian

styles menyertakan nilai yang tidak ditentukan DateTimeStyles . -or- NoCurrentDateDefault tidak didukung. -atau- styles termasuk nilai yang saling eksklusif DateTimeStyles .

Keterangan

Metode ini menguraikan representasi string dari tanggal yang cocok dengan salah satu pola yang ditetapkan ke formats array. Jika input tidak cocok dengan salah satu pola ini dengan variasi apa pun yang ditentukan oleh styles parameter , operasi penguraian gagal dan metode mengembalikan false. Selain membandingkan input dengan beberapa string yang berisi penentu format, kelebihan beban ini berperilaku identik dengan DateTimeOffset.ParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles) metode .

Parameter formats adalah array string yang elemennya berisi penentu format standar tunggal atau satu atau beberapa penentu format kustom yang menentukan kemungkinan pola input. Untuk detail tentang kode pemformatan yang valid, lihat String Format Tanggal dan Waktu Standar dan String Format Tanggal dan Waktu Kustom. Jika elemen yang cocok di formats menyertakan zpenentu format kustom , , zzatau zzz untuk menunjukkan bahwa offset harus ada di input, offset tersebut harus menyertakan tanda negatif atau tanda positif. Jika tanda hilang, operasi penguraian gagal dan metode mengembalikan false.

Penting

formats Menggunakan parameter kelebihan beban ini untuk menentukan beberapa format dapat membantu mengurangi frustrasi yang dialami banyak pengguna saat mereka memasukkan tanggal dan waktu. Secara khusus, kemampuan untuk menentukan beberapa pola input memungkinkan aplikasi untuk menangani representasi tanggal dan waktu yang dapat mencakup atau tidak memiliki nol di depan dalam bulan, hari, jam, menit, dan detik. Contohnya memberikan ilustrasi tentang hal ini.

Jika elemen yang cocok di formats mengharuskan berisi input tanggal tetapi bukan waktu, objek yang dihasilkan DateTimeOffset ditetapkan waktu tengah malam (0:00:00). Jika elemen yang cocok di formats mengharuskan input tersebut berisi waktu tetapi bukan tanggal, objek yang dihasilkan DateTimeOffset ditetapkan tanggal saat ini pada sistem lokal. Jika elemen yang cocok di formats tidak memerlukan yang input berisi offset, offset objek yang dihasilkan DateTimeOffset tergantung pada nilai styles parameter. Jika styles termasuk DateTimeStyles.AssumeLocal, offset zona waktu lokal ditetapkan ke DateTimeOffset objek . Jika styles menyertakan DateTimeStyles.AssumeUniversal, offset Waktu Universal Terkoordinasi (UTC), atau +00:00, ditetapkan ke DateTimeOffset objek . Jika tidak ada nilai yang ditentukan, offset zona waktu lokal akan digunakan.

Simbol tanggal dan waktu tertentu yang digunakan ditentukan input oleh formatProvider parameter . Hal yang sama berlaku untuk pola input yang tepat jika elemen formats pencocokan adalah string penentu format standar. Parameter formatProvider dapat berupa salah satu dari yang berikut:

Jika formatprovider adalah null, CultureInfo objek yang sesuai dengan budaya saat ini digunakan.

Parameter styles menentukan apakah spasi kosong diizinkan dalam string input, menunjukkan bagaimana string tanpa komponen offset eksplisit diurai, dan mendukung konversi UTC sebagai bagian dari operasi penguraian. Semua anggota DateTimeStyles enumerasi didukung kecuali NoCurrentDateDefault. Tabel berikut ini mencantumkan efek dari setiap anggota yang didukung.

DateTimeStyles anggota Aktivitas
AdjustToUniversal Mengurai input dan, jika perlu, mengonversinya ke UTC. Ini setara dengan mengurai string, dan kemudian memanggil DateTimeOffset.ToUniversalTime metode objek yang dikembalikan DateTimeOffset .
AssumeLocal Jika elemen yang cocok di formats tidak mengharuskan yang input berisi nilai offset, objek yang dikembalikan DateTimeOffset diberikan offset zona waktu lokal. Ini adalah nilai default.
AssumeUniversal Jika elemen yang cocok di formats tidak memerlukan yang input berisi nilai offset, objek yang dikembalikan DateTimeOffset diberikan offset UTC (+00:00).
AllowInnerWhite Memungkinkan input untuk menyertakan ruang putih dalam yang tidak ditentukan oleh elemen di formats. Ruang kosong ekstra dapat muncul antara komponen tanggal dan waktu dan dalam komponen individual (kecuali untuk offset) dan diabaikan saat mengurai string.
AllowLeadingWhite Memungkinkan input untuk menyertakan spasi di depan yang tidak ditentukan oleh elemen di formats. Ini diabaikan saat mengurai string.
AllowTrailingWhite Memungkinkan input untuk menyertakan spasi berikutnya yang tidak ditentukan oleh elemen di formats. Ini diabaikan saat mengurai string.
AllowWhiteSpaces Memungkinkan input untuk menyertakan spasi di depan, di belakang, dan dalam yang tidak ditentukan oleh elemen di formats. Semua karakter spasi putih ekstra yang tidak ditentukan dalam elemen yang cocok di formats diabaikan saat mengurai string.
None Menunjukkan bahwa ruang kosong tambahan tidak diizinkan di input. Spasi kosong harus muncul persis seperti yang ditentukan dalam elemen tertentu agar formats kecocokan berhasil terjadi. Ini adalah perilaku default.
RoundtripKind Tidak berpengaruh karena DateTimeOffset struktur tidak menyertakan Kind properti .

Berlaku untuk

TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTimeOffset)

Sumber:
DateTimeOffset.cs
Sumber:
DateTimeOffset.cs
Sumber:
DateTimeOffset.cs

Mengonversi representasi string yang ditentukan dari tanggal dan waktu ke DateTimeOffset yang setara menggunakan format yang ditentukan, informasi format khusus budaya, dan gaya. Format representasi string harus sama persis dengan format yang ditentukan.

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

Parameter

input
String

String yang berisi tanggal dan waktu untuk dikonversi.

format
String

Penentu format yang menentukan format yang diperlukan dari input.

formatProvider
IFormatProvider

Objek yang memasok informasi pemformatan khusus budaya tentang input.

styles
DateTimeStyles

Kombinasi bitwise dari nilai enumerasi yang menunjukkan format input yang diizinkan. Nilai umum yang ditentukan adalah None.

result
DateTimeOffset

Ketika metode kembali, berisi DateTimeOffset yang setara dengan tanggal dan waktu input, jika konversi berhasil, atau DateTimeOffset.MinValue, jika konversi gagal. Konversi gagal jika input parameter adalah null, atau tidak berisi representasi string yang valid dari tanggal dan waktu dalam format yang diharapkan yang ditentukan oleh format dan provider. Parameter ini diteruskan tanpa diinisialisasi.

Mengembalikan

trueinput jika parameter berhasil dikonversi; jika tidak, false.

Pengecualian

styles menyertakan nilai yang tidak ditentukan DateTimeStyles .

-atau-

NoCurrentDateDefault tidak didukung.

-atau-

styles mencakup nilai yang saling eksklusif DateTimeStyles .

Contoh

Contoh berikut menggunakan TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTimeOffset) metode dengan penentu format standar dan kustom, budaya invarian, dan berbagai DateTimeStyles nilai untuk mengurai beberapa string tanggal dan waktu.

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.

Contoh berikut menggunakan berbagai DateTimeStyles nilai untuk mengurai array string yang diharapkan sesuai dengan ISO 8601. Seperti yang ditunjukkan oleh output dari contoh, string yang dalam format yang tepat gagal diurai jika:

String yang tidak menentukan offset UTC diasumsikan memiliki offset zona waktu lokal (dalam hal ini, -07:00, yang mencerminkan offset zona Waktu Siang Hari Pasifik) kecuali DateTimeStyles.AssumeUniversal bendera disediakan dalam panggilan metode. Dalam hal ini, mereka diasumsikan sebagai Universal Coordinated Time.

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

Keterangan

Kelebihan beban TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTimeOffset) metode ini seperti DateTimeOffset.ParseExact(String, String, IFormatProvider, DateTimeStyles) metode , kecuali bahwa metode ini tidak memberikan pengecualian jika konversi gagal. Ini mengurai representasi string tanggal dan waktu yang harus sama persis dengan pola yang ditentukan oleh format parameter. input Jika string tidak cocok dengan pola ini, dengan beberapa variasi yang mungkin dalam spasi putih yang ditentukan oleh styles parameter, operasi penguraian gagal dan metode mengembalikan false.

Parameter format adalah string yang berisi penentu format standar tunggal atau satu atau beberapa penentu format kustom yang menentukan pola yang diperlukan dari input. Untuk detail tentang kode pemformatan yang valid, lihat String Format Tanggal dan Waktu Standar dan String Format Tanggal dan Waktu Kustom. Jika format menyertakan z, , zzatau zzz penentu format kustom untuk menunjukkan bahwa offset harus ada di input, offset tersebut harus menyertakan tanda negatif atau tanda positif. Jika tanda hilang, operasi penguraian gagal dan metode mengembalikan false.

Jika format memerlukan yang input berisi tanggal tetapi bukan waktu, objek yang dihasilkan DateTimeOffset ditetapkan waktu tengah malam (0:00:00). Jika format memerlukan yang input berisi waktu tetapi bukan tanggal, objek yang DateTimeOffset dihasilkan ditetapkan tanggal saat ini pada sistem lokal. Jika format tidak memerlukan yang input berisi offset, offset objek yang dihasilkan DateTimeOffset tergantung pada nilai styles parameter. Jika styles menyertakan AssumeLocal, offset zona waktu lokal ditetapkan ke DateTimeOffset objek . Jika styles menyertakan AssumeUniversal, offset Waktu Universal Terkoordinasi (UTC), atau +00:00, ditetapkan ke DateTimeOffset objek . Jika tidak ada nilai yang ditentukan, offset zona waktu lokal akan digunakan.

Simbol dan string tanggal dan waktu tertentu yang digunakan ditentukan input oleh formatProvider parameter . Hal yang sama berlaku untuk pola yang tepat jika inputformat adalah string penentu format standar. Parameter formatProvider dapat berupa salah satu hal berikut:

Jika formatprovider adalah null, CultureInfo objek yang sesuai dengan budaya saat ini digunakan.

Parameter styles menentukan apakah spasi putih diizinkan dalam string input, menunjukkan bagaimana string tanpa komponen offset eksplisit diurai, dan mendukung konversi UTC sebagai bagian dari operasi penguraian. Semua anggota DateTimeStyles enumerasi didukung kecuali NoCurrentDateDefault. Tabel berikut ini mencantumkan efek dari setiap anggota yang didukung.

DateTimeStyles anggota Aktivitas
AdjustToUniversal Mengurai input dan, jika perlu, mengonversinya menjadi UTC. Ini setara dengan mengurai string, dan kemudian memanggil DateTimeOffset.ToUniversalTime metode objek yang dikembalikan DateTimeOffset .
AssumeLocal Jika format tidak memerlukan yang input berisi nilai offset, objek yang dikembalikan DateTimeOffset diberi offset zona waktu lokal. Ini adalah perilaku default.
AssumeUniversal Jika format tidak memerlukan yang input berisi nilai offset, objek yang dikembalikan DateTimeOffset diberi offset UTC (+00:00).
AllowInnerWhite Memungkinkan input untuk menyertakan ruang putih dalam yang tidak ditentukan oleh format. Ruang kosong ekstra dapat muncul antara komponen tanggal dan waktu dan dalam komponen individual, selain offset, dan diabaikan saat mengurai string.
AllowLeadingWhite Memungkinkan input untuk menyertakan spasi di depan yang tidak ditentukan oleh format. Ini diabaikan saat mengurai string.
AllowTrailingWhite Memungkinkan input untuk menyertakan spasi berikutnya yang tidak ditentukan oleh format. Ini diabaikan saat mengurai string.
AllowWhiteSpaces Memungkinkan input untuk menyertakan spasi di depan, di belakang, dan dalam yang tidak ditentukan oleh format. Semua karakter spasi putih ekstra yang tidak ditentukan di format diabaikan saat mengurai string.
None Menunjukkan bahwa ruang kosong tambahan tidak diizinkan di input. Spasi kosong harus muncul persis seperti yang ditentukan dalam format. Ini adalah perilaku default.
RoundtripKind Tidak berpengaruh, karena DateTimeOffset struktur tidak menyertakan Kind properti .

Catatan Bagi Pemanggil

Dalam .NET Framework 4, TryParseExact mengembalikan false jika string yang akan diurai berisi komponen jam dan penunjuk AM/PM yang tidak dalam perjanjian. Dalam .NET Framework 3.5 dan versi yang lebih lama, penunjuk AM/PM diabaikan.

Lihat juga

Berlaku untuk