2010-03-14 39 views
10

Tôi muốn chuyển đổi giá trị 8 chữ số thành đối tượng DateTime. Tôi có thể làm cái này như thế nào? Ví dụ: nếu người dùng nhập 08082010 thì nó sẽ chuyển đổi nó thành 08/08/2010, sử dụng C#.Chuyển đổi 8 chữ số thành Loại ngày giờ

+3

gì tôi thích nhất về câu hỏi này việc sử dụng ngày 08 tháng 8, là có mặt nạ thực tế là nó là mơ hồ cho dù chúng ta có nghĩa là MM/dd/yyyy so với dd/MM/yyyy –

Trả lời

11
CultureInfo provider = CultureInfo.InvariantCulture; 
string dateString = "08082010"; 
string format = "MMddyyyy"; 
DateTime result = DateTime.ParseExact(dateString, format, provider); 

Điều này sẽ hiệu quả.

+0

Còn nhà cung cấp thì sao ??? –

+0

Đã thêm CultureInfo ... – Jason

0

Sử dụng DateTime.Parse

+0

Tôi đã thử tất cả các các phương thức như Parse và TryParse của DateTime nhưng nó không làm việc cho tôi, đó là lý do tại sao tôi hỏi câu hỏi ở đây. –

+0

Điều này sẽ không hoạt động, bởi vì "08082010" không phải là định dạng ngày được chấp nhận cho DateTime.Parse. Sử dụng ** DateTime.ParseExact ** _or_ ** DateTime.TryParseExact ** (tùy thuộc vào nhu cầu của bạn). – ScottK

6

Sử dụng DateTime.ParseExact() với một specifier dạng của "ddMMyyyy" hoặc "MMddyyyy".

5

Tôi chỉ đang cố gắng làm điều tương tự và tôi phải đồng ý với phương pháp của Ignacio. Câu trả lời đã được chấp nhận hoạt động nhưng phương thức ParseExact ném một ngoại lệ trong trường hợp chuỗi ngày không hợp lệ, trong khi phương thức TryParseExact sẽ chỉ trả lại false. Ví dụ:

using System.Globalization; 
// ... 
string dateString = "12212010"; 
string format = "MMddyyyy"; 
DateTime dateStarted; 
if (!DateTime.TryParseExact(dateString, format, null, DateTimeStyles.None, out dateStarted)) 
    dateStarted = DateTime.Now; 
Các vấn đề liên quan