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?


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);

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);

11
Jawaban ini membuktikan betapa pentingnya penamaan.
eomeroff

17

Hari ini:

DateTime.Today

Besok:

DateTime.Today.AddDays(1)

Kemarin:

DateTime.Today.AddDays(-1)

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.




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.


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);

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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.