Mengapa tidak hanya menggunakan Penentu Format The Round-trip ("O", "o") ?
Penentu format standar "O" atau "o" mewakili string format tanggal dan waktu kustom menggunakan pola yang mempertahankan informasi zona waktu dan mengeluarkan string hasil yang sesuai dengan ISO 8601. Untuk nilai DateTime, penentu format ini dirancang untuk mempertahankan tanggal dan nilai waktu bersama dengan properti DateTime.Kind dalam teks. String yang diformat dapat diurai kembali dengan menggunakan metode DateTime.Parse (String, IFormatProvider, DateTimeStyles) atau DateTime.ParseExact jika parameter gaya disetel ke DateTimeStyles.RoundtripKind.
Penentu format standar "O" atau "o" sesuai dengan string format kustom "yyyy '-' MM '-' dd'T'HH ':' mm ':' ss '.' FffffffK" untuk nilai DateTime dan "yyyy '-' MM '-' dd'T'HH ':' mm ':' ss '.' fffffffzzz" string format khusus untuk nilai DateTimeOffset. Dalam string ini, pasangan tanda kutip tunggal yang membatasi karakter individu, seperti tanda hubung, titik dua, dan huruf "T", menunjukkan bahwa karakter individu adalah literal yang tidak dapat diubah. Tanda kutip tidak muncul di string keluaran.
Penentu format standar O "atau" o "(dan string format kustom" yyyy '-' MM '-' dd'T'HH ':' mm ':' ss '.' FffffffK ") memanfaatkan tiga cara bahwa ISO 8601 mewakili informasi zona waktu untuk mempertahankan properti Jenis nilai DateTime:
public class Example
{
public static void Main()
{
DateTime dat = new DateTime(2009, 6, 15, 13, 45, 30,
DateTimeKind.Unspecified);
Console.WriteLine("{0} ({1}) --> {0:O}", dat, dat.Kind);
DateTime uDat = new DateTime(2009, 6, 15, 13, 45, 30,
DateTimeKind.Utc);
Console.WriteLine("{0} ({1}) --> {0:O}", uDat, uDat.Kind);
DateTime lDat = new DateTime(2009, 6, 15, 13, 45, 30,
DateTimeKind.Local);
Console.WriteLine("{0} ({1}) --> {0:O}\n", lDat, lDat.Kind);
DateTimeOffset dto = new DateTimeOffset(lDat);
Console.WriteLine("{0} --> {0:O}", dto);
}
}