Bagikan melalui


DateTimeOffset.TryParseExact Metode

Definisi

Mengonversi representasi string yang ditentukan dari tanggal dan waktu ke 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 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 ke 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 ke 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 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 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 inputyang diharapkan.

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 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 input tidak berisi representasi string yang valid dari tanggal dan waktu, atau tidak berisi tanggal dan waktu dalam format yang diharapkan yang ditentukan oleh formats, atau jika formatsnull. Parameter ini diteruskan tanpa diinisialisasi.

Mengembalikan

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

Pengecualian

styles menyertakan nilai DateTimeStyles yang tidak ditentukan.

-atau-

NoCurrentDateDefault tidak didukung.

-atau-

styles mencakup nilai DateTimeStyles yang saling eksklusif.

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 metode 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

Keterangan

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

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 dalam formats menyertakan z, zz, atau 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

Menggunakan parameter formats dari 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 kurang nol di depan dalam bulan, hari, jam, menit, dan detik. Contoh memberikan ilustrasi tentang hal ini.

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

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

Jika formatprovidernull, objek CultureInfo 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 enumerasi DateTimeStyles didukung kecuali NoCurrentDateDefault. Tabel berikut ini mencantumkan efek dari setiap anggota yang didukung.

anggota DateTimeStyles Perilaku
AdjustToUniversal Mengurai input dan, jika perlu, mengonversinya ke UTC. Ini setara dengan mengurai string, lalu memanggil metode DateTimeOffset.ToUniversalTime objek DateTimeOffset yang dikembalikan.
AssumeLocal Jika elemen yang cocok di formats tidak mengharuskan input berisi nilai offset, objek DateTimeOffset yang dikembalikan diberikan offset zona waktu lokal. Ini adalah nilai default.
AssumeUniversal Jika elemen yang cocok dalam formats tidak mengharuskan input berisi nilai offset, objek DateTimeOffset yang dikembalikan diberikan offset UTC (+00:00).
AllowInnerWhite Memungkinkan input untuk menyertakan spasi putih dalam yang tidak ditentukan oleh elemen dalam 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 depan, di belakang, dan dalam yang tidak ditentukan oleh elemen dalam 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 dalam formats agar kecocokan berhasil terjadi. Ini adalah perilaku default.
RoundtripKind Tidak berpengaruh karena struktur DateTimeOffset tidak menyertakan properti Kind.

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 ke 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 inputyang diperlukan.

formatProvider
IFormatProvider

Objek yang memasok informasi pemformatan khusus budaya tentang input.

styles
DateTimeStyles

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

result
DateTimeOffset

Saat 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 input berhasil dikonversi; jika tidak, false.

Pengecualian

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

Keterangan

Kelebihan beban ini seperti metode DateTimeOffset.ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles), kecuali bahwa metode ini tidak melemparkan pengecualian jika konversi gagal. Ini mengurai representasi tanggal dan waktu yang harus sama persis dengan pola yang ditentukan oleh parameter format. Jika input tidak cocok dengan pola ini, dengan beberapa variasi yang mungkin dalam spasi putih yang ditentukan oleh parameter styles, 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 inputyang diperlukan. 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, zz, atau 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 mengharuskan input berisi tanggal tetapi bukan waktu, objek DateTimeOffset yang dihasilkan ditetapkan waktu tengah malam (0:00:00). Jika format mengharuskan input berisi waktu tetapi bukan tanggal, objek DateTimeOffset yang dihasilkan ditetapkan tanggal saat ini pada sistem lokal. Jika format tidak mengharuskan input berisi offset, offset objek DateTimeOffset yang dihasilkan tergantung pada nilai parameter styles. Jika styles menyertakan AssumeLocal, offset zona waktu lokal ditetapkan ke objek DateTimeOffset. Jika styles menyertakan AssumeUniversal, offset Waktu Universal Terkoordinasi (UTC), atau +00:00, ditetapkan ke objek DateTimeOffset. Jika tidak ada nilai yang ditentukan, offset zona waktu lokal digunakan.

Simbol dan string tanggal dan waktu tertentu yang digunakan dalam input ditentukan oleh parameter formatProvider. 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 ini:

Jika formatprovidernull, objek CultureInfo 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 enumerasi DateTimeStyles didukung kecuali NoCurrentDateDefault. Tabel berikut ini mencantumkan efek dari setiap anggota yang didukung.

anggota DateTimeStyles Perilaku
AdjustToUniversal Mengurai input dan, jika perlu, mengonversinya ke UTC. Ini setara dengan mengurai representasi tanggal dan waktu, lalu memanggil metode DateTimeOffset.ToUniversalTime objek DateTimeOffset yang dikembalikan.
AssumeLocal Jika format tidak mengharuskan input berisi nilai offset, objek DateTimeOffset yang dikembalikan diberikan offset zona waktu lokal. Ini adalah perilaku default.
AssumeUniversal Jika format tidak mengharuskan input berisi nilai offset, objek DateTimeOffset yang dikembalikan 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 menyertakan spasi terdepan, di belakang, dan dalam yang tidak ditentukan oleh format. Semua karakter spasi putih ekstra yang tidak ditentukan dalam 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 struktur DateTimeOffset tidak menyertakan properti Kind.

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 ke 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 inputyang dapat diterima.

formatProvider
IFormatProvider

Objek yang memasok informasi pemformatan khusus budaya tentang input.

styles
DateTimeStyles

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

result
DateTimeOffset

Saat 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 input berhasil dikonversi; jika tidak, false.

Pengecualian

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

Keterangan

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

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 dalam formats menyertakan z, zz, atau 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

Menggunakan parameter formats dari 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 kurang nol di depan dalam bulan, hari, jam, menit, dan detik. Contoh memberikan ilustrasi tentang hal ini.

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

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

Jika formatprovidernull, objek CultureInfo 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 enumerasi DateTimeStyles didukung kecuali NoCurrentDateDefault. Tabel berikut ini mencantumkan efek dari setiap anggota yang didukung.

anggota DateTimeStyles Perilaku
AdjustToUniversal Mengurai input dan, jika perlu, mengonversinya ke UTC. Ini setara dengan mengurai string, lalu memanggil metode DateTimeOffset.ToUniversalTime objek DateTimeOffset yang dikembalikan.
AssumeLocal Jika elemen yang cocok di formats tidak mengharuskan input berisi nilai offset, objek DateTimeOffset yang dikembalikan diberikan offset zona waktu lokal. Ini adalah nilai default.
AssumeUniversal Jika elemen yang cocok dalam formats tidak mengharuskan input berisi nilai offset, objek DateTimeOffset yang dikembalikan diberikan offset UTC (+00:00).
AllowInnerWhite Memungkinkan input untuk menyertakan spasi putih dalam yang tidak ditentukan oleh elemen dalam 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 depan, di belakang, dan dalam yang tidak ditentukan oleh elemen dalam 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 dalam formats agar kecocokan berhasil terjadi. Ini adalah perilaku default.
RoundtripKind Tidak berpengaruh karena struktur DateTimeOffset tidak menyertakan properti Kind.

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 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 inputyang diperlukan.

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 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 parameter inputnull, 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

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

Pengecualian

styles menyertakan nilai DateTimeStyles yang tidak ditentukan.

-atau-

NoCurrentDateDefault tidak didukung.

-atau-

styles mencakup nilai DateTimeStyles yang saling eksklusif.

Contoh

Contoh berikut menggunakan metode TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTimeOffset) dengan penentu format standar dan kustom, budaya invarian, dan berbagai nilai DateTimeStyles 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 nilai DateTimeStyles 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 bendera DateTimeStyles.AssumeUniversal 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 metode TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTimeOffset) ini seperti metode DateTimeOffset.ParseExact(String, String, IFormatProvider, DateTimeStyles), kecuali bahwa metode ini tidak memberikan pengecualian jika konversi gagal. Ini menguraikan representasi string dari tanggal dan waktu yang harus sama persis dengan pola yang ditentukan oleh parameter format. Jika string input tidak cocok dengan pola ini, dengan beberapa kemungkinan variasi dalam spasi putih yang ditentukan oleh parameter styles, operasi penguraian gagal dan metode mengembalikan false.

Parameter format adalah string yang berisi satu penentu format standar atau satu atau beberapa penentu format kustom yang menentukan pola inputyang diperlukan. 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, zz, atau 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 mengharuskan input berisi tanggal tetapi bukan waktu, objek DateTimeOffset yang dihasilkan ditetapkan waktu tengah malam (0:00:00). Jika format mengharuskan input berisi waktu tetapi bukan tanggal, objek DateTimeOffset yang dihasilkan ditetapkan tanggal saat ini pada sistem lokal. Jika format tidak mengharuskan input berisi offset, offset objek DateTimeOffset yang dihasilkan tergantung pada nilai parameter styles. Jika styles menyertakan AssumeLocal, offset zona waktu lokal ditetapkan ke objek DateTimeOffset. Jika styles menyertakan AssumeUniversal, offset Waktu Universal Terkoordinasi (UTC), atau +00:00, ditetapkan ke objek DateTimeOffset. Jika tidak ada nilai yang ditentukan, offset zona waktu lokal digunakan.

Simbol dan string tanggal dan waktu tertentu yang digunakan dalam input ditentukan oleh parameter formatProvider. 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 ini:

Jika formatprovidernull, objek CultureInfo 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 enumerasi DateTimeStyles didukung kecuali NoCurrentDateDefault. Tabel berikut ini mencantumkan efek dari setiap anggota yang didukung.

anggota DateTimeStyles Perilaku
AdjustToUniversal Mengurai input dan, jika perlu, mengonversinya ke UTC. Ini setara dengan mengurai string, lalu memanggil metode DateTimeOffset.ToUniversalTime objek DateTimeOffset yang dikembalikan.
AssumeLocal Jika format tidak mengharuskan input berisi nilai offset, objek DateTimeOffset yang dikembalikan diberikan offset zona waktu lokal. Ini adalah perilaku default.
AssumeUniversal Jika format tidak mengharuskan input berisi nilai offset, objek DateTimeOffset yang dikembalikan 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 menyertakan spasi terdepan, di belakang, dan dalam yang tidak ditentukan oleh format. Semua karakter spasi putih ekstra yang tidak ditentukan dalam 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 struktur DateTimeOffset tidak menyertakan properti Kind.

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