bagaimana bisa kemarin dan besok datetime di c #

101

Saya punya kode:

int MonthNow = System.DateTime.Now.Month;
int YearNow = System.DateTime.Now.Year;
int DayNow = System.DateTime.Now.Day;

Bagaimana saya bisa mendapatkan kemarin dan besok hari, bulan dan tahun di C #?

Tentu saja, saya bisa menulis:

DayTommorow = DayNow +1;

tetapi mungkin saja besok adalah bulan atau tahun lain. Apakah ada alat bawaan C # untuk mencari tahu kemarin dan hari ini?

Alexander V.
sumber
Masalah dengan DayNow + 1atau - 1adalah jika ini adalah hari pertama dari hari terakhir bulan ini tidak akan berhasil. DateTime.Now.Day hanyalah representasi integer dari hari ini.
Gary.S

Jawaban:

126

Anda dapat menemukan info ini langsung di referensi API .

var today = DateTime.Today;
var tomorrow = today.AddDays(1);
var yesterday = today.AddDays(-1);
Tabrez
sumber
28
Silakan posting jika memungkinkan bagian yang relevan dari situs web yang ditautkan daripada hanya menautkan ke situs web
JMax
JMax, Tentu. Tautannya adalah untuk Metode DateTime.AddDays, yang memungkinkan penambahan / pengurangan hari. Ini lebih mudah digunakan dalam konteks pertanyaan, dibandingkan dengan metode DateTime.Add yang lebih umum.
Tabrez
5
... dan itu bisa menjadi bagian rinci dari jawaban Anda :).
C4d
160
DateTime tomorrow = DateTime.Today.AddDays(1);
DateTime yesterday = DateTime.Today.AddDays(-1);
Erik Larsson
sumber
11
Jawaban ini membuktikan betapa pentingnya penamaan.
eomeroff
17

Hari ini:

DateTime.Today

Besok:

DateTime.Today.AddDays(1)

Kemarin:

DateTime.Today.AddDays(-1)
aleroot
sumber
16

Anda harus melakukannya dengan cara ini, jika Anda ingin mendapatkannya kemarin dan besok pada pukul 00:00:00:

DateTime yesterday = DateTime.Today.AddDays(-1);
DateTime tomorrow = DateTime.Today.AddDays(1); // Output example: 6. 02. 2016 00:00:00

Ingatlah bahwa jika Anda melakukannya dengan cara ini:

DateTime yesterday = DateTime.Now.AddDays(-1);
DateTime tomorrow = DateTime.Now.AddDays(1); // Output example: 6. 02. 2016 18:09:23

maka Anda akan mendapatkan waktu saat ini dikurangi satu hari, dan bukan kemarin pada jam 00:00:00.

Jo Smo
sumber
15

Kamu mau DateTime.Today.AddDays(1).

SLaks
sumber
14

Gunakan DateTime.AddDays()( Metode DateTime.AddDays Dokumentasi MSDN ).

DateTime tomorrow = DateTime.Now.AddDays(1);
DateTime yesterday = DateTime.Now.AddDays(-1);
Novakov
sumber
4
Kemarin Anda adalah "24 jam yang lalu". Gunakan DateTime.Today untuk melepaskan hari dengan cara yang benar.
Henk Holterman
2

Triknya adalah dengan menggunakan "DateTime" untuk memanipulasi tanggal; hanya gunakan bilangan bulat dan string jika Anda membutuhkan "hasil akhir" dari tanggal tersebut.

Misalnya (kode semu):

  1. Dapatkan "DateTime besok = Sekarang + 1"

  2. Tentukan tanggal, hari dalam seminggu, hari dalam sebulan - apa pun yang Anda inginkan - dari tanggal yang dihasilkan.

paulsm4
sumber
1

Untuk mendapatkan "lokal" kemarin di UTC.

  var now = DateTime.Now;
  var yesterday = new DateTime(now.Year, now.Month, now.Day, 0, 0, 0, DateTimeKind.Utc).AddDays(-1);
Namik Hajiyev
sumber
0

Berhati-hatilah dalam menambahkan zona waktu yang tidak diinginkan ke hasil Anda, terutama jika tanggal tersebut akan dikirim melalui API Web. Gunakan UtcNow sebagai gantinya, untuk membuatnya tanpa zona waktu.

Martin Dye
sumber