DateTimeOffset.TryParseExact Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mengonversi representasi string yang ditentukan dari tanggal dan waktu ke DateTimeOffset yang setara. Format representasi string harus sama persis dengan format yang ditentukan.
Overload
| Nama | Deskripsi |
|---|---|
| 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 ke DateTimeOffset yang 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 yang 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
- 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 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 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 formats adalah null. Parameter ini diteruskan tanpa diinisialisasi.
Mengembalikan
true
input 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 mendefinisikan 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 mencakup atau kurang nol di depan dalam bulan, hari, jam, menit, dan detik. Contoh 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 DateTimeOffset dihasilkan ditetapkan tanggal saat ini pada sistem lokal. Jika elemen yang cocok di formats tidak memerlukan yang input berisi offset, offset objek yang DateTimeOffset dihasilkan tergantung pada nilai styles parameter. Jika styles termasuk AssumeLocal, offset zona waktu lokal ditetapkan ke DateTimeOffset objek. Jika styles termasuk AssumeUniversal, offset Waktu Universal Terkoordinasi (UTC), atau +00:00, ditetapkan ke DateTimeOffset objek. Jika tidak ada nilai yang ditentukan, offset zona waktu lokal 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 pencocokan adalah formats string penentu format standar. Parameter formatProvider dapat berupa salah satu dari yang berikut:
Objek CultureInfo yang mewakili budaya berdasarkan yang
inputditafsirkan. Objek DateTimeFormatInfo yang CultureInfo.DateTimeFormat dikembalikan oleh properti menentukan simbol dan pemformatan diinput.Objek DateTimeFormatInfo yang menentukan format data tanggal dan waktu.
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 |
Perilaku |
|---|---|
| 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 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 spasi 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 depan, trailing, dan dalam yang tidak ditentukan oleh elemen di formats. Semua karakter spasi putih tambahan 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
- Sumber:
- DateTimeOffset.cs
- Sumber:
- DateTimeOffset.cs
Mengonversi representasi tanggal dan waktu dalam rentang karakter ke DateTimeOffset yang 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 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
input jika parameter berhasil dikonversi; jika tidak, false.
Pengecualian
styles menyertakan nilai yang tidak ditentukan DateTimeStyles .
-atau- NoCurrentDateDefault tidak didukung.
-atau- styles termasuk nilai yang saling eksklusif DateTimeStyles .
Keterangan
Kelebihan beban ini seperti DateTimeOffset.ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) metode , 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 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 , zz, atau zzz 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 DateTimeOffset dihasilkan tergantung pada nilai styles parameter. Jika styles termasuk AssumeLocal, offset zona waktu lokal ditetapkan ke DateTimeOffset objek. Jika styles termasuk AssumeUniversal, offset Waktu Universal Terkoordinasi (UTC), atau +00:00, ditetapkan ke DateTimeOffset objek. Jika tidak ada nilai yang ditentukan, offset zona waktu lokal 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 dari yang berikut:
Objek CultureInfo yang mewakili budaya berdasarkan yang
inputditafsirkan. Objek DateTimeFormatInfo yang CultureInfo.DateTimeFormat dikembalikan oleh properti menentukan simbol dan format standar yang diizinkan dalaminput.Objek DateTimeFormatInfo yang menentukan format data tanggal dan waktu.
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 |
Perilaku |
|---|---|
| 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 yang input berisi 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 diberi 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 putih tambahan yang tidak ditentukan diabaikan format 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
- Sumber:
- DateTimeOffset.cs
- Sumber:
- DateTimeOffset.cs
Mengonversi representasi tanggal dan waktu dalam rentang karakter ke DateTimeOffset yang 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
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
input jika parameter berhasil dikonversi; jika tidak, false.
Pengecualian
styles menyertakan nilai yang tidak ditentukan DateTimeStyles .
-atau- 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 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 mencakup atau kurang nol di depan dalam bulan, hari, jam, menit, dan detik. Contoh 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 DateTimeOffset dihasilkan ditetapkan tanggal saat ini pada sistem lokal. Jika elemen yang cocok di formats tidak memerlukan yang input berisi offset, offset objek yang DateTimeOffset dihasilkan tergantung pada nilai styles parameter. Jika styles termasuk DateTimeStyles.AssumeLocal, offset zona waktu lokal ditetapkan ke DateTimeOffset objek. Jika styles termasuk DateTimeStyles.AssumeUniversal, offset Waktu Universal Terkoordinasi (UTC), atau +00:00, ditetapkan ke DateTimeOffset objek. Jika tidak ada nilai yang ditentukan, offset zona waktu lokal digunakan.
Simbol tanggal dan waktu tertentu yang digunakan di input didefinisikan oleh formatProvider parameter . Hal yang sama berlaku untuk pola input yang tepat jika elemen pencocokan adalah formats string penentu format standar. Parameter formatProvider dapat berupa salah satu dari yang berikut:
Objek CultureInfo yang mewakili budaya berdasarkan yang
inputditafsirkan. Objek DateTimeFormatInfo yang CultureInfo.DateTimeFormat dikembalikan oleh properti menentukan simbol dan pemformatan diinput.Objek DateTimeFormatInfo yang menentukan format data tanggal dan waktu.
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 |
Perilaku |
|---|---|
| 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 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 spasi 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 depan, trailing, dan dalam yang tidak ditentukan oleh elemen di formats. Semua karakter spasi putih tambahan 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
- 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 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 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
true
input 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:
mereka berisi spasi kosong, dan bendera yang sesuai DateTimeStyles (seperti DateTimeStyles.AllowWhiteSpaces belum disediakan dalam panggilan metode.
mereka berisi elemen tanggal dan waktu yang berada di luar rentang.
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 metode TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTimeOffset) ini seperti DateTimeOffset.ParseExact(String, String, IFormatProvider, DateTimeStyles) metode , kecuali bahwa metode ini tidak melemparkan pengecualian jika konversi gagal. Ini mengurai representasi string dari 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 penentu zformat , zz, atau zzz 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 DateTimeOffset dihasilkan tergantung pada nilai styles parameter. Jika styles termasuk AssumeLocal, offset zona waktu lokal ditetapkan ke DateTimeOffset objek. Jika styles termasuk AssumeUniversal, offset Waktu Universal Terkoordinasi (UTC), atau +00:00, ditetapkan ke DateTimeOffset objek. Jika tidak ada nilai yang ditentukan, offset zona waktu lokal 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 dari yang berikut:
Objek CultureInfo yang mewakili budaya berdasarkan yang
inputditafsirkan. Objek DateTimeFormatInfo yang CultureInfo.DateTimeFormat dikembalikan oleh properti menentukan simbol dan format standar yang diizinkan dalaminput.Objek DateTimeFormatInfo yang menentukan format data tanggal dan waktu.
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 |
Perilaku |
|---|---|
| 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 format tidak mengharuskan yang input berisi 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 diberi 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 putih tambahan yang tidak ditentukan diabaikan format 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.