2009-10-20 34 views
9

Tôi đang cố lưu trữ ngày rút gọn (mm/dd/yyyy) vào đối tượng DateTime. Đoạn mã dưới đây là những gì tôi hiện đang cố gắng làm; điều này bao gồm thời gian (00:00:00) mà tôi không muốn :(Lưu trữ một ngày ngắn trong đối tượng DateTime

DateTime goodDateHolder = Convert.ToDateTime(DateTime.Now.ToShortDateString()); 

Ta được kết quả 2009/10/19 00:00:00

Trả lời

17

DateTime là một số nguyên được diễn giải để biểu diễn cả hai phần của DateTime (ví dụ: ngày tháng và thời gian). Bạn sẽ luôn có cả ngày và giờ trong DateTime. Xin lỗi, không có gì bạn có thể làm về nó.

Bạn có thể sử dụng .Date để nhận phần ngày. Trong những trường hợp này, thời gian sẽ luôn là 12:00 nhưng bạn có thể bỏ qua phần đó nếu bạn không muốn.

+0

Ditto. Hơn nữa, chuỗi định dạng ngày về cơ bản cho phép bạn bỏ qua các phần bạn không quan tâm. Ví dụ: So sánh hai ngày sử dụng cùng chuỗi định dạng '{MM/dd/yyyy}' và thời gian không được sử dụng. Lưu ý rằng chúng tôi thực sự so sánh các chuỗi nhưng chúng tôi giả vờ rằng chúng tôi đang so sánh các đối tượng ngày tháng. – radarbob

+0

@radarbob: gần như. Chúng tôi đang thực sự so sánh các số nguyên đã được phân tích cú pháp từ một số nguyên dài hơn, nhưng tinh thần của những gì bạn đang nói là chính xác. – Dinah

3

Thay vì .Now bạn có thể sử dụng .Today sẽ không xóa phần thời gian, nhưng sẽ chỉ điền vào phần ngày và để lại thời gian cho giá trị mặc định

Sau đó, như những người khác đã chỉ ra, bạn nên cố gắng bỏ qua phần ngày bỏ qua phần thời gian về tình huống.

+0

DateTime.Today.ToShortDateString() vẫn có thời gian là 12:00:00 AM – mezoid

+0

Có, bạn đã đúng. Tôi đã cung cấp thêm thông tin. – Petros

3

Bạn chỉ có hai tùy chọn trong trường hợp này.

1) Bỏ qua phần thời gian của giá trị.

2) Tạo lớp trình bao bọc.

Cá nhân, tôi có khuynh hướng sử dụng tùy chọn 1.

3

DateTime sẽ luôn có thành phần thời gian - ngay cả khi đó là 12:00:00 SA. Bạn chỉ cần định dạng DateTime khi bạn hiển thị nó (ví dụ: goodDateHolder.ToShortDateString()).

0

Đối tượng DateTime lưu trữ cả ngày và giờ. Để chỉ hiển thị ngày tháng, bạn sẽ sử dụng phương thức DateTime.ToString (string).

DateTime goodDateHolder = DateTime.Now; 
// outputs 10/19/2009 
Console.WriteLine(goodDateHolder.ToString("MM/dd/yyyy")); 

Để biết thêm thông tin về phương pháp ToString, hãy làm theo này link

+1

Trong hầu hết các trường hợp, tốt hơn nên sử dụng ToShortDateString, để thành phần ngày sử dụng định dạng được bản địa hóa. –

0

Bạn có thể không có khả năng để có được nó như là một đối tượng DateTime ... nhưng khi bạn muốn hiển thị nó, bạn có thể định dạng nó trong theo cách bạn muốn bằng cách làm một cái gì đó như thế nào.

myDateTime.ToString ("M/d/yyyy") cho bạn ngày 19 tháng 10 năm 2009 cho ví dụ của bạn.

0

Bạn sẽ luôn nhận được phần thời gian trong loại DateTime.

DateTime goodDateHolder = Convert.ToDateTime(DateTime.Now.ToShortDateString()); 

sẽ cung cấp cho bạn ngày hôm nay nhưng sẽ luôn hiển thị thời gian là nửa đêm.

Nếu bạn đang lo lắng về định dạng sau đó bạn sẽ thử một cái gì đó như thế này

goodDateHolder.ToString("mm/dd/yyyy") 

để có được những ngày trong các định dạng mà bạn muốn.

Đây là một nguồn lực tốt msdn-dateformat

0

DateTime là chỉ đơn thuần là một UInt64 với định dạng hữu ích và thông minh bao bọc xung quanh nó để làm cho nó xuất hiện như một ngày cộng với một thời điểm.Bạn không thể loại bỏ yếu tố thời gian.

1

Bạn cũng có thể xem Noda Time dựa trên thư viện Java Joda Time.

Các vấn đề liên quan