Vâng, bạn có thể tạo kiểu riêng của bạn - nhưng một DateTime
luôn có một ngày đầy đủ và thời gian. Bạn thậm chí không thể có "chỉ một ngày" bằng cách sử dụng DateTime
- gần nhất bạn có thể đến là có một DateTime
vào lúc nửa đêm.
Bạn luôn thể bỏ qua năm mặc dù - hoặc đi năm nay:
// Consider whether you want DateTime.UtcNow.Year instead
DateTime value = new DateTime(DateTime.Now.Year, month, day);
Để tạo kiểu riêng của bạn, bạn có thể luôn luôn chỉ cần nhúng một DateTime
trong một cấu trúc, và proxy trên các cuộc gọi như AddDays
v.v.
public struct MonthDay : IEquatable<MonthDay>
{
private readonly DateTime dateTime;
public MonthDay(int month, int day)
{
dateTime = new DateTime(2000, month, day);
}
public MonthDay AddDays(int days)
{
DateTime added = dateTime.AddDays(days);
return new MonthDay(added.Month, added.Day);
}
// TODO: Implement interfaces, equality etc
}
Lưu ý rằng năm bạn chọn ảnh hưởng đến hành vi của loại - ngày 29 tháng 2 có phải là giá trị tháng/ngày hợp lệ hay không? Nó phụ thuộc vào năm ...
Cá nhân tôi không nghĩ rằng tôi sẽ tạo loại cho điều này - thay vào đó tôi sẽ có phương thức trả lại "lần tiếp theo chương trình sẽ chạy".
Nguồn
2011-10-31 19:50:08
Ngày có năm. Kết thúc câu chuyện. Nếu bạn muốn chỉ tháng và ngày, hãy tạo kiểu đối tượng của riêng bạn để giữ nó. –
đúng sự thật, tôi đoán câu hỏi của tôi là sau đó .. Làm thế nào bạn sẽ có thể có một ngày định kỳ mà không có nhiều đối tượng/sự kiện – novicePrgrmr
Ai sẽ sử dụng đối tượng datetime này? – sll