Bạn cần sử dụng ParseExact
method. Này có một chuỗi như là đối số thứ hai của nó mà xác định các định dạng datetime là, ví dụ:
// Parse date and time with custom specifier.
dateString = "2011-29-01 12:00 am";
format = "yyyy-dd-MM h:mm tt";
try
{
result = DateTime.ParseExact(dateString, format, provider);
Console.WriteLine("{0} converts to {1}.", dateString, result.ToString());
}
catch (FormatException)
{
Console.WriteLine("{0} is not in the correct format.", dateString);
}
Nếu người dùng có thể chỉ định một định dạng trong giao diện người dùng, sau đó bạn cần phải dịch mà thành một chuỗi, bạn có thể vượt qua vào phương pháp này. Bạn có thể thực hiện điều đó bằng cách cho phép người dùng nhập chuỗi định dạng trực tiếp - mặc dù điều này có nghĩa là chuyển đổi có nhiều khả năng thất bại vì họ sẽ nhập chuỗi định dạng không hợp lệ - hoặc có hộp tổ hợp hiển thị chúng với các lựa chọn có thể và bạn thiết lập chuỗi định dạng cho các lựa chọn này.
Nếu nó có khả năng rằng các đầu vào sẽ không chính xác (đầu vào người sử dụng chẳng hạn) nó sẽ là tốt hơn để sử dụng TryParseExact
chứ không phải là trường hợp ngoại lệ để xử lý các trường hợp lỗi:
// Parse date and time with custom specifier.
dateString = "2011-29-01 12:00 am";
format = "yyyy-dd-MM h:mm tt";
DateTime result;
if (DateTime.TryParseExact(dateString, format, provider, DateTimeStyles.None, out result))
{
Console.WriteLine("{0} converts to {1}.", dateString, result.ToString());
}
else
{
Console.WriteLine("{0} is not in the correct format.", dateString);
}
Bằng cách này, bạn có thể xác định xem việc chuyển đổi thất bại bằng cách kiểm tra giá trị trả về của 'TryParse'. Đó là 'bool success = DateTime.TryParse (...);'. –