Saya sedang mengerjakan sebuah program yang membutuhkan tanggal suatu acara untuk dikembalikan.
Saya mencari Date
, bukan DateTime
.
Apakah ada tipe data yang mengembalikan tanggal saja?
Tidak, tidak ada. DateTime
mewakili beberapa titik waktu yang terdiri dari tanggal dan waktu. Namun, Anda dapat mengambil bagian tanggal melalui Date
properti (yang lain DateTime
dengan waktu yang diatur ke 00:00:00
).
Dan Anda dapat mengambil properti tanggal individu melalui Day
, Month
dan Year
.
Saya membuat struct Tanggal sederhana untuk saat-saat ketika Anda memerlukan tanggal sederhana tanpa mengkhawatirkan porsi waktu, zona waktu, lokal vs. utc, dll.
Date today = Date.Today;
Date yesterday = Date.Today.AddDays(-1);
Date independenceDay = Date.Parse("2013-07-04");
independenceDay.ToLongString(); // "Thursday, July 4, 2013"
independenceDay.ToShortString(); // "7/4/2013"
independenceDay.ToString(); // "7/4/2013"
independenceDay.ToString("s"); // "2013-07-04"
int july = independenceDay.Month; // 7
Sayangnya, tidak ada di .Net BCL. Tanggal biasanya direpresentasikan sebagai objek DateTime dengan waktu yang disetel ke tengah malam.
Seperti yang bisa Anda tebak, ini berarti Anda memiliki semua masalah zona waktu petugas di sekitarnya, meskipun untuk objek Tanggal Anda sama sekali tidak menginginkan penanganan zona waktu.
sumber
date
untuk apa pun adalah ide yang buruk kecuali Anda 100% yakin aplikasi Anda hanya akan beroperasi dalam satu zona waktu. Menyimpan semuanya untukdatetime
memberi Anda yang terbaik dari kedua dunia, termasuk yang paling kritis, cara mudah untuk menghindari mimpi buruk zona waktu jika konfigurasi zona waktu server Anda berubah ... dan mulai menulis data dengan cara yang tidak Anda antisipasi.Datetime
dapat menyelamatkan Anda di sana,date
tidak bisa sama sekali, dan akan menjadi sangat sulit untuk diperbaiki jika Anda mulai menulisdate
dengan konteks zona waktu yang salah.Buat kelas pembungkus. Sesuatu seperti ini:
Dan ungkapkan apa pun yang
value
Anda inginkan.sumber
DateTimeKind.Unspecified
sehingga ketika serial itu akan deserialized tanpa mengubah (mungkin mengubah tanggal berdasarkan yang berbeda dalam zona waktu).DateTimeKind.Utc
. Jangan setel keDateTimeKind.Unspecified
karena itu akan menjamin serialisasi / deserialisasi dengan offset zona waktu yang disertakan! Tanggal kalender tetap sama terlepas dari zona waktu, jadi jangan biarkan sistem menyesuaikannya.Tipe Tanggal hanyalah alias dari tipe DateTime yang digunakan oleh VB.NET (seperti int menjadi Integer). Kedua tipe ini memiliki properti Tanggal yang mengembalikan Anda objek dengan bagian waktu diatur ke 00:00:00.
sumber
DateTime memiliki Tanggal properti yang dapat Anda gunakan untuk mengisolasi bagian tanggal. The ToString metode juga melakukan pekerjaan yang baik hanya menampilkan bagian Tanggal ketika paruh waktu kosong.
sumber
Objek DateTime memiliki properti yang mengembalikan hanya bagian tanggal dari nilai.
sumber
DateTime
dengan waktu disetel ke 0:00:00Tidak ada
Date
DataType.Namun Anda dapat menggunakan
DateTime.Date
hanya untuk mendapatkan Tanggal.MISALNYA
sumber
DateTime.Now.Date
sama denganDateTime.Today
. AdaDateTime.UtcNow
yang mengembalikan nilai tanggal-waktu sebagai waktu universal (UTC), tetapi tidak ada metode atau properti yang setara dengan UTC untuk Hari Ini;DateTimeKind.UtcNow.Date
adalah ekspresi yang tepat.Anda dapat mengembalikan DateTime di mana bagian waktunya adalah 00:00:00 dan abaikan saja. Tanggal ditangani sebagai bilangan bulat timestamp sehingga masuk akal untuk menggabungkan tanggal dengan waktu seperti yang ada dalam bilangan bulat.
sumber
Untuk ini, Anda perlu menggunakan tanggal, tetapi abaikan nilai waktu.
Biasanya tanggal akan menjadi DateTime dengan waktu
00:00:00
The
DateTime
jenis memiliki.Date
properti yang mengembalikanDateTime
dengan nilai waktu yang ditetapkan seperti di atas.sumber
sumber
Anda dapat mencoba salah satu dari berikut ini:
Tapi tidak ada tipe "Tanggal" di BCL.
sumber