2013-04-15 62 views
9

Tôi muốn định dạng chuỗi đầu vào thành Định dạng MM/dd/yyyy hh: mm: ss trong C#.
Chuỗi đầu vào là ở định dạng MM/dd/yyyy hh:mm:ss
Ví dụ: "04/30/2013 23:00"Định dạng ngày giờ Sự cố: Chuỗi không được nhận dạng là DateTime hợp lệ

tôi đã cố gắng Convert.ToDateTime() chức năng, nhưng nó coi 4 như ngày và 3 là tháng mà không phải là những gì tôi muốn. Trên thực tế tháng là 04 và ngày là 03.

Tôi cũng đã thử chức năng DateTime.ParseExact(), Nhưng nhận ngoại lệ.

Tôi nhận được lỗi:

String was not recognized as a valid DateTime.

+2

Bạn có thể gửi mã nguồn thực tế mà bạn gặp rắc rối với? – tafa

+0

Làm thế nào bạn đã thử 'ParseExact'? tôi đoán bạn bị mất một cái gì đó cho các định dạng thông qua đoán đơn giản nó sẽ là 'HH' thay vì' hh' vì bạn có định dạng 24 giờ – V4Vendetta

+0

r u sử dụng datetime picker? –

Trả lời

12

chuỗi thời gian ngày của bạn doesn' t chứa bất kỳ giây nào. Bạn cần phản ánh điều đó trong định dạng của mình (xóa :ss).
Ngoài ra, bạn cần phải xác định H thay vì h nếu bạn đang sử dụng 24 lần giờ:

DateTime.ParseExact("04/30/2013 23:00", "MM/dd/yyyy HH:mm", CultureInfo.InvariantCulture) 

Xem ở đây để biết thêm thông tin:

Custom Date and Time Format Strings

+0

'str =" 6 "; dtm = DateTime.ParseExact (str, "d", CultureInfo.InvariantCulture); 'bị lỗi đối với tôi. Bất kỳ ý tưởng? – Si8

+0

@ Si8 Đó là vì "d" là chuỗi định dạng chuẩn (ngày ngắn). Thay vào đó, bạn có thể sử dụng "% d". Xem tại đây: https://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx#UsingSingleSpecifiers – Botz3000

+0

câu trả lời tuyệt vời mà bạn tiết kiệm được nhờ ngày –

3

thử điều này:

string strTime = "04/30/2013 23:00"; 
DateTime dtTime; 
if(DateTime.TryParseExact(strTime, "MM/dd/yyyy HH:mm", 
    System.Globalization.CultureInfo.InvariantCulture, 
    System.Globalization.DateTimeStyles.None, out dtTime)) 
{ 
    Console.WriteLine(dtTime); 
} 
5

Bạn có thể sử dụng phương pháp DateTime.ParseExact().

Converts the specified string representation of a date and time to its DateTime equivalent using the specified format and culture-specific format information. The format of the string representation must match the specified format exactly.

DateTime date = DateTime.ParseExact("04/30/2013 23:00", 
            "MM/dd/yyyy HH:mm", 
            CultureInfo.InvariantCulture); 

Đây là một DEMO.

hh là dành cho đồng hồ 12 giờ 01-12, HH là dành cho đồng hồ 24 giờ từ 00 đến 23.

Để biết thêm thông tin, hãy Custom Date and Time Format Strings

+2

Cảm ơn bạn. Nó hoạt động cho tôi :) – Priya

+0

@Priya Bạn được chào đón ';)' –

0
DateTime dt1 = DateTime.ParseExact([YourDate], "dd-MM-yyyy HH:mm:ss", 
              CultureInfo.InvariantCulture); 

Lưu ý việc sử dụng HH (Đồng hồ 24 giờ) thay vì hh (đồng hồ 12 giờ), và việc sử dụng InvariantCulture vì một số nền văn hóa sử dụng các dấu tách khác với dấu gạch chéo.

Ví dụ: nếu văn bản là de-DE, định dạng "dd/MM/yyyy" sẽ là khoảng thời gian làm dấu phân tách (31.01.2011).

0

Dưới đây đang làm việc cho tôi:

string _stDate = Convert.ToDateTime(DateTime.Today.AddMonths(-12)).ToString("MM/dd/yyyy"); 
String format ="MM/dd/yyyy"; 
IFormatProvider culture = new System.Globalization.CultureInfo("fr-FR", true); 
DateTime _Startdate = DateTime.ParseExact(_stDate, format, culture); 
Các vấn đề liên quan