này cũng đơn giản như phân tích một DateTime
với một định dạng chính xác.
Achievable với
var dateStr = "14:00";
var dateTime = DateTime.ParseExact(dateStr, "H:mm", null, System.Globalization.DateTimeStyles.None);
Phương pháp DateTime.ParseExact()
(msdn link) đơn giản cho phép bạn vượt qua chuỗi định dạng mà bạn muốn như chuỗi phân tích cú pháp của bạn để trả lại DateTime
struct. Bây giờ, Date
porition của chuỗi này sẽ được mặc định là ngày todays khi không có phần ngày được cung cấp.
Để trả lời phần thứ hai
Làm thế nào tôi có thể nhận được một đối tượng DateTime với ngày hiện tại như ngày, trừ khi thời điểm hiện tại đã 14:00:01, sau đó ngày nên ngày hôm sau.
Điều này cũng đơn giản, vì chúng tôi biết rằng DateTime.ParseExact sẽ trả về ngày thường (vì chúng tôi không cung cấp phần ngày), chúng tôi có thể so sánh ngày được phân tích là DateTime.Now
. Nếu DateTime.Now
lớn hơn ngày được phân tích cú pháp của chúng tôi, chúng tôi thêm 1
ngày vào ngày được phân tích cú pháp của chúng tôi.
var dateStr = "14:00";
var now = DateTime.Now;
var dateTime = DateTime.ParseExact(dateStr, "H:mm", null, System.Globalization.DateTimeStyles.None);
if (now > dateTime)
dateTime = dateTime.AddDays(1);
Nếu bạn đang nhắm mục tiêu một một múi giờ cụ thể, bạn là tốt hơn hết nhắm vào múi giờ. Thay vì một thời gian cụ thể. Tùy thuộc vào ứng dụng của bạn và nếu nó mở rộng múi giờ, một thư viện sẽ bảo vệ bạn khỏi những thay đổi về múi giờ và sẽ làm việc với thời gian và ngày tháng dễ dàng hơn nhiều. –