xem xét mã này (prestuffed với một ví dụ):Tại sao chuỗi định dạng TimeSpan cụ thể này ngừng hoạt động trong .NET 4?
DateTime dt1 = DateTime.Parse("7/30/2010 9:33:29.1234567 AM");
DateTime dt2 = DateTime.Parse("6/30/2010 9:33:00.7654321 AM");
TimeSpan ts = dt1 - dt2;
Console.WriteLine(string.Format("{0:d.hh:mm:ss.ff}", ts));
Đây là đại diện của một đoạn mã mà tôi đã đã làm việc kể từ NET 1.1 ít nhất.
Nó hoạt động tốt trong 1.1 đến 3.5 với kết quả như sau (đối với những đóng góp dummied lên):
30.00:00:28.3580246
Nhưng bây giờ tôi thấy rằng nó chết trong .NET 4 với thông báo lỗi:
Input string was not in a correct format.
Vì vậy, như thể .NET 4 đã đột nhiên quyết định không thích định dạng này cho sự khác biệt về thời gian. Thay đổi dòng, giả sử
Console.WriteLine(string.Format("{0}", ts.ToString("d.hh:mm:ss.ff")));
có cùng tác dụng.
Bây giờ điều tôi đã nhận thấy là nếu tôi chỉ làm mặc định .ToString()
tôi nhận được cùng một đầu ra. Tôi tin rằng quá trình suy nghĩ là đây là một chính sách bảo hiểm chống lại định dạng mặc định thay đổi trong một phiên bản tương lai. Nhưng bây giờ nó không giống như đó thậm chí là một lựa chọn.
Có ai biết tại sao điều này thay đổi và nếu tôi đang làm điều gì đó sai hoặc nếu có cách thực hành tốt nhất để làm những gì tôi đang cố gắng hoàn thành?
Văn hóa này thuộc loại nào? –
Văn hóa địa phương của tôi là: en-US –