2012-01-26 36 views
5

Tôi đang cố gắng hiển thị trường ngày giờ chỉ sử dụng phần giờ mà không có số 0 đứng đầu trong một số giờ như: return string.Format("{0:h}", MyDateTimefield) nhưng Tôi nhận được lỗi "Chuỗi đầu vào không đúng định dạng". Tại sao?Lỗi "Chuỗi đầu vào không đúng định dạng" khi cố gắng hiển thị phần giờ với 'h'

return string.Format("{0:hh}", MyDateTimefield) hoạt động. Tìm kiếm định dạng đúng và không phải là giải pháp thay thế.

+0

MyDateTimefield có thuộc loại 'DateTime' không? Tôi hỏi vì nếu nó là, bạn có thể có thể chỉ cần trả về 'MyDateTimefield.ToString (" h ");' – pstrjds

+0

@pstrjds mà ném cùng một lỗi. –

+0

Tôi biết bạn không muốn giải pháp, nhưng MyDateTimefield.Hour.ToString() sẽ hoạt động. –

Trả lời

14

Từ the pertinent docs:

Nếu "h" format specifier được sử dụng mà không cần specifiers định dạng tùy chỉnh khác, nó được xem như là một ngày và thời gian format specifier chuẩn và ném một FormatException. Để biết thêm thông tin về cách sử dụng một trình định dạng định dạng duy nhất, hãy xem Using Single Custom Format Specifiers sau trong chủ đề này.

Tiếp theo liên kết mà được bạn:

Để sử dụng bất kỳ ngày tuỳ chỉnh và định dạng thời gian specifiers như sự xác định duy nhất trong một chuỗi định dạng [...], bao gồm một không gian trước hoặc sau khi specifier hoặc bao gồm chỉ số định dạng phần trăm ("%") trước ngày tùy chỉnh và chỉ định thời gian duy nhất.

+1

+1 Tìm tốt, không biết về vấn đề ký tự đơn lẻ. – pstrjds

+0

Tôi đã sử dụng hai đoạn mã chuỗi định dạng khác nhau và chúng không đề cập đến các chỉ định định dạng duy nhất. Cảm ơn! –

2

Từ this link sử dụng h là định dạng chính xác cho giờ mà không hàng đầu 0. Rất thú vị .. sau tất cả dường như làm việc:

return string.Format("{0: h}", MyDateTimefield) 
return string.Format("{0:h }", MyDateTimefield) 
return string.Format("{0:h:m}", MyDateTimefield) 

Nhưng ngay khi bạn đặt trong return string.Format("{0:h}", MyDateTimefield) nó ném một ngoại lệ .

Vì lý do tại sao, tôi không chắc chắn. Nếu bạn không sao với một khoảng trống thì 2 dòng đầu tiên sẽ hoạt động.

+0

Lý do không hoạt động là các chuỗi định dạng ký tự đơn là Đặc biệt trong .NET và chỉ được hiểu là "các định dạng định dạng chuẩn". – millimoose

+0

Chỉ cần đọc câu trả lời của bạn. Tốt tìm. Tôi đã đọc qua cùng một trang msdn nhưng tôi dường như chỉ hoàn toàn bỏ qua phần đó :) – Lester

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