2009-08-17 26 views
5

Như tên của tiểu bang, cách tốt nhất để so sánh với DateTime là gì mà không cần giờ và giây?So sánh hai thời gian biểu - không có giờ và thứ hai

Tôi không muốn chuyển đổi ngày của tôi để chuỗi, và một giải pháp như

DateTime.Now.Year == last.Year && DateTime.Now.Month == last.Month && DateTime.Now.Day == last.Day

là khá chết tiệt xấu xí.

Chỉnh sửa: Ôi trời ơi, tôi cảm thấy ngớ ngẩn như thế nào. Tất nhiên bạn có thể sử dụng thuộc tính Date.

"Một câu hỏi khác": Cách tốt nhất để so sánh DateTime với Năm, Tháng, Ngày, Giờ, Phút, nhưng không phải là giây?

Cảm ơn

+0

Để trả lời câu hỏi khác của bạn, có lẽ bạn có thể làm việc nhiều với .Ticks, mở rộng quy mô nó xuống một cách thích hợp cho đến khi nó phù hợp với bất cứ kích thước bạn muốn đo. Nhưng tôi có lẽ chỉ cần đi với phương pháp rõ ràng của việc kiểm tra các lĩnh vực. –

Trả lời

16

Đây có phải là: những gì bạn đang tìm kiếm không?

DateTime.Now.Date 
+0

Tuyệt đối, tôi biết tài sản đó. Tôi cảm thấy ngớ ngẩn như thế nào. – alexn

3

Hãy xem tài sản Date, sau đó bạn có thể so sánh dt1.Date với dt2.Date.

1

bạn có thể sử dụng thuộc tính Ngày của đối tượng DateTime.

Ví dụ, DateTime dateOne

tài sản dateOne.Date sẽ chỉ sử dụng một phần ngày.

0

trả lời cho 'khác' câu hỏi: bạn có thể tạo một phần mở rộng cho DateTime

public static bool EqualsIgnoreSeconds(this DateTime a, DateTime b) 
{ 
    // the ugly code 
} 

nhưng sau đó sử dụng nó là đẹp, ví dụ như: DateTime.Now.EqualsIgnoreSeconds(b)

1

Thậm chí đơn giản hơn so với câu trả lời chấp nhận bạn chỉ có thể sử dụng :

DateTime.Today 
1

Liên quan đến việc so sánh mà không giây, chỉ cần sử dụng này:

public static bool EqualsIgnoringSeconds(this DateTime source, DateTime target) 
{ 
    return TimeSpan.FromTicks(source.Ticks).TotalMinutes == TimeSpan.FromTicks(target.Ticks).TotalMinutes; 
} 
0
using System; 

namespace Rextester 
{ 
    public class Program 
    { 
     public static void Main(string[] args) 
     { 
      DateTime date1 = new DateTime(2009, 8, 1, 0, 0, 0); 
      DateTime date2 = new DateTime(2009, 8, 1, 12, 0, 0); 
      int result = DateTime.Compare(date1.Date, date2.Date); 
      string relationship; 

      if (result < 0) 
      relationship = "is earlier than"; 
      else if (result == 0) 
      relationship = "is the same time as";   
      else 
      relationship = "is later than"; 

      Console.WriteLine("{0} {1} {2}", date1, relationship, date2); 
     } 
    } 
} 

Dòng này là rất quan trọng:

int result = DateTime.Compare(date1.Date, date2.Date);