làm thế nào để có được ngày hôm qua và ngày mai trong c #


100

Tôi có một mật mã:

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

Làm thế nào tôi có thể nhận được ngày hôm qua và ngày mai, tháng và năm trong C #?

Tất nhiên, tôi chỉ có thể viết:

DayTommorow = DayNow +1;

nhưng nó có thể xảy ra rằng ngày mai là tháng khác hoặc năm. Có các công cụ tích hợp sẵn trong C # để tìm hiểu ngày hôm qua và hôm nay không?


Vấn đề với DayNow + 1hoặc - 1là nếu đó là ngày đầu tiên của ngày cuối cùng của tháng, điều này sẽ không hoạt động. DateTime.Now.Day chỉ là một đại diện số nguyên của ngày hiện tại.
Gary.S

Câu trả lời:


125

Bạn có thể tìm thấy thông tin này ngay trong tài liệu tham khảo API .

var today = DateTime.Today;
var tomorrow = today.AddDays(1);
var yesterday = today.AddDays(-1);

28
Hãy bài nếu có thể phần liên quan của trang web liên kết thay vì chỉ liên kết đến các trang web
JMax

JMax, chắc chắn. Liên kết dành cho Phương pháp DateTime.AddDays, cho phép cộng / trừ ngày. Điều này dễ sử dụng hơn trong ngữ cảnh của câu hỏi, so với phương thức DateTime.Add chung chung hơn.
Tabrez

5
... và đó có thể là phần chi tiết của câu trả lời của bạn :).
C4d

160
DateTime tomorrow = DateTime.Today.AddDays(1);
DateTime yesterday = DateTime.Today.AddDays(-1);

11
Câu trả lời này chứng minh việc đặt tên quan trọng như thế nào.
eomeroff

17

Hôm nay:

DateTime.Today

Ngày mai :

DateTime.Today.AddDays(1)

Hôm qua:

DateTime.Today.AddDays(-1)

16

Bạn nên làm theo cách này, nếu bạn muốn nhận được ngày hôm qua và ngày mai lúc 00:00:00:

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

Chỉ cần ghi nhớ rằng nếu bạn làm theo cách này:

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

thì bạn sẽ lấy thời gian hiện tại trừ đi một ngày chứ không phải thời gian ngày hôm qua lúc 00:00:00.




2

Bí quyết là sử dụng "DateTime" để thao tác ngày tháng; chỉ sử dụng số nguyên và chuỗi khi bạn cần "kết quả cuối cùng" từ ngày.

Ví dụ (mã giả):

  1. Nhận "DateTime ngày mai = Now + 1"

  2. Xác định ngày, ngày trong tuần, ngày trong tháng - bất cứ thứ gì bạn muốn - của ngày kết quả.


1

Để nhận "địa phương" ngày hôm qua theo giờ UTC.

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

0

Cẩn thận với việc thêm múi giờ không mong muốn vào kết quả của bạn, đặc biệt nếu ngày sắp được gửi qua API Web. Thay vào đó, hãy sử dụng UtcNow để giảm thiểu múi giờ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.