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 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 input
yang 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 formats
null
. 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:
Objek CultureInfo yang mewakili budaya berdasarkan
input
yang ditafsirkan. Objek DateTimeFormatInfo yang dikembalikan oleh properti CultureInfo.DateTimeFormat menentukan simbol dan pemformatan dalaminput
.Objek DateTimeFormatInfo yang menentukan format data tanggal dan waktu.
Jika formatprovider
null
, 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 input
yang 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
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 input
yang 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:
Objek CultureInfo yang mewakili budaya berdasarkan
input
yang ditafsirkan. Objek DateTimeFormatInfo yang dikembalikan oleh properti CultureInfo.DateTimeFormat menentukan simbol dan format standar yang diizinkan dalaminput
.Objek DateTimeFormatInfo yang menentukan format data tanggal dan waktu.
Jika formatprovider
null
, 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 input
yang dapat diterima.
- 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
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:
Objek CultureInfo yang mewakili budaya berdasarkan
input
yang ditafsirkan. Objek DateTimeFormatInfo yang dikembalikan oleh properti CultureInfo.DateTimeFormat menentukan simbol dan pemformatan dalaminput
.Objek DateTimeFormatInfo yang menentukan format data tanggal dan waktu.
Jika formatprovider
null
, 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 input
yang 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 input
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
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:
mereka berisi spasi kosong, dan bendera DateTimeStyles yang sesuai (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 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 input
yang 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:
Objek CultureInfo yang mewakili budaya berdasarkan
input
yang ditafsirkan. Objek DateTimeFormatInfo yang dikembalikan oleh properti CultureInfo.DateTimeFormat menentukan simbol dan format standar yang diizinkan dalaminput
.Objek DateTimeFormatInfo yang menentukan format data tanggal dan waktu.
Jika formatprovider
null
, 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.