วันที่และเวลาในวันวานและพรุ่งนี้เป็นอย่างไรใน c #


101

ฉันมีรหัส:

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

ฉันจะได้รับเมื่อวานและพรุ่งนี้วันเดือนและปีใน C # ได้อย่างไร?

แน่นอนฉันสามารถเขียน:

DayTommorow = DayNow +1;

แต่อาจเกิดขึ้นได้ว่าพรุ่งนี้เป็นเดือนหรือปีอื่น ๆ มีเครื่องมือในตัว C # สำหรับค้นหาเมื่อวานและวันนี้หรือไม่?


ปัญหาเกี่ยวกับDayNow + 1หรือ- 1ถ้าเป็นวันแรกของวันสุดท้ายของเดือนนี้จะไม่ได้ผล DateTime.Now.Day เป็นเพียงการแสดงจำนวนเต็มของวันปัจจุบัน
Gary.S

คำตอบ:


128

คุณสามารถค้นหาข้อมูลนี้ได้ในการอ้างอิง API

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

28
กรุณาโพสต์ถ้าเป็นไปได้ส่วนที่เกี่ยวข้องของเว็บไซต์ที่เชื่อมโยงแทนเพียงการเชื่อมโยงไปยังเว็บไซต์
JMax

JMax แน่นอน ลิงก์นี้ใช้สำหรับ DateTime.AddDays Method ซึ่งอนุญาตให้เพิ่ม / ลบวัน ใช้ง่ายกว่าในบริบทของคำถามเมื่อเทียบกับวิธี DateTime.Add ทั่วไป
Tabrez

5
... และนั่นอาจเป็นส่วนโดยละเอียดของคำตอบของคุณ :)
C4d

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

11
คำตอบนี้พิสูจน์ว่าการตั้งชื่อมีความสำคัญอย่างไร
eomeroff


16

คุณควรทำเช่นนี้หากคุณต้องการรับเมื่อวานและพรุ่งนี้เวลา 00:00:00 น.:

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

เพียงแค่จำไว้ว่าถ้าคุณทำเช่นนี้:

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

จากนั้นคุณจะได้รับเวลาปัจจุบันลบหนึ่งวันไม่ใช่เมื่อวานนี้ที่ 00:00:00 เวลา




2

เคล็ดลับคือการใช้ "DateTime" เพื่อกำหนดวันที่ ใช้เฉพาะจำนวนเต็มและสตริงเมื่อคุณต้องการ "ผลลัพธ์สุดท้าย" จากวันที่

ตัวอย่างเช่น (รหัสหลอก):

  1. รับ "DateTime tomorrow = Now + 1"

  2. กำหนดวันที่วันในสัปดาห์วันในเดือน - สิ่งที่คุณต้องการ - ของวันที่เกิด


1

เพื่อรับ "ท้องถิ่น" เมื่อวานนี้ใน UTC

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

0

ระวังการเพิ่มเขตเวลาที่ไม่ต้องการลงในผลลัพธ์ของคุณโดยเฉพาะอย่างยิ่งหากวันที่จะถูกส่งผ่าน Web API ใช้ UtcNow แทนเพื่อทำให้มีเขตเวลาน้อยลง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.