Banyak jawaban di sini menunjukkan penyimpanan sebagai UTC. Tapi berhati-hatilah dengan ini. Misalnya, jika Anda menjadwalkan janji temu pada pukul 12:00 tetapi janji temu dilakukan setelah perubahan waktu musim panas, apa yang akan terjadi? UTC tidak menyimpan informasi apakah dst aktif ketika janji temu disimpan. Banyak sistem besar dan terkenal telah membuat kesalahan ini, di mana pengguna mengirim email pada jam 9 pagi di musim panas, dan kemudian di musim dingin waktu yang dikirim menunjukkan jam 8 pagi, karena perhitungan kembali dari UTC tergantung pada saat Anda melihat datetime, tidak aktif saat datetime direkam.
Jauh lebih baik dengan menganggap pengguna Anda ingin memiliki waktu yang ia pilih selalu. Tidak ada konversi UTC, tidak ada konversi waktu, tidak ada info zona waktu, tidak ada. Membuat janji dari 08: 00-12: 00 pada 21 Maret 2016 hanya itu. Jangan gunakan waktu lokal atau waktu UTC, tetapi waktu yang tidak ditentukan (di json ini tidak memiliki z atau +, pada dasarnya, dalam. NET ini memiliki DateTime.Kind = DateTimeKind.Unspecified).
Tentu saja, jika kasus penggunaan Anda adalah bahwa Anda adalah perusahaan yang mengadakan pertemuan dengan seseorang dari zona waktu yang berbeda dan Anda ingin melihat informasi ini di, katakanlah, kalender perusahaan, tetapi memungkinkan pengguna untuk melihat waktu apa yang ada di zona waktu mereka, itu menjadi lebih rumit. Waktu harus tepat untuk orang yang berbeda di zona waktu yang berbeda (pemasok dan pelanggan).
Dalam kasus tersebut, Anda bahkan mungkin ingin mencatat kapan janji temu disimpan ke basis data, di zona waktu apa dan apakah itu termasuk dst atau tidak. Dengan begitu, Anda selalu dapat menghitung kembali waktu setempat untuk hal lain, baik untuk apa sekarang atau untuk apa yang dimaksudkan secara historis. Karena zona waktu sangat tidak statis, membuat segalanya semakin rumit.
Untungnya, di sinilah perpustakaan seperti http://nodatime.org/ masuk dan sangat direkomendasikan. Mereka bekerja dengan kencan jauh lebih konsisten. Bahkan kemudian saya akan merekomendasikan membungkus semua variabel dan logika datetime Anda dalam pembungkus Anda sendiri, menggunakan antarmuka sehingga mereka dapat diejek, dan kemudian Anda masih dapat beralih logika nanti.