2011-12-26 52 views
12

Tôi đang phát triển asp.net trang web sử dụng vbkhuôn khổ 3.5.Chuyển đổi chuỗi thành ngày giờ

Im gặp khó khăn trong việc chuyển đổi dữ liệu chuỗi vào ngày Tôi đã cố gắng sử dụng chức năng CDate,

Tôi có một sdate biến mà là một chuỗi biến và ngày được lưu trữ trong nó mà xuất phát từ textbox như dd/mm/yyyy nay tôi muốn chuyển đổi chuỗi này thành biến ngày tháng vì tôi cần thực hiện các thao tác dưới dạng Thêm ngày hoặc Trừ một ngày.

Vui lòng hướng dẫn tôi cách thực hiện việc này. tôi gặp lỗi trên dòng thứ 3 là String was not recognized as a valid DateTime. Tôi đã cố gắng để làm như sau nhưng lỗi đến

Dim sdate As String 
Dim expenddt As Date 
expenddt = Date.Parse(edate) 
expenddt = expenddt.AddDays(-1) 

Nhưng tôi nhận được lỗi như

Chuyển đổi từ String để gõ ngày là không hợp lệ.

Làm cách nào để nhận được Date từ chuỗi?

+1

Xin làm rõ - bạn đang sử dụng VB6 hoặc VB.NET? – Oded

+0

Xin lỗi tôi đã sửa chữa câu hỏi của tôi – Ishan

Trả lời

31

Bạn phải sử dụng Date.ParseExact hoặc Date.TryParseExact với chuỗi định dạng chính xác.

Dim edate = "10/12/2009" 
Dim expenddt As Date = Date.ParseExact(edate, "dd/MM/yyyy", 
      System.Globalization.DateTimeFormatInfo.InvariantInfo) 

HOẶC

Dim format() = {"dd/MM/yyyy", "d/M/yyyy", "dd-MM-yyyy"} 
Dim expenddt As Date = Date.ParseExact(edate, format, 
    System.Globalization.DateTimeFormatInfo.InvariantInfo, 
    Globalization.DateTimeStyles.None) 

HOẶC

Dim format() = {"dd/MM/yyyy", "d/M/yyyy", "dd-MM-yyyy"} 
Dim expenddt As Date 
Date.TryParseExact(edate, format, 
    System.Globalization.DateTimeFormatInfo.InvariantInfo, 
    Globalization.DateTimeStyles.None, expenddt) 
+0

Cảm ơn bạn.Khi tôi gỡ lỗi, thì expdt có phiên bản # 12/31/2011 # khi giá trị thay đổi là 31/12/2011. Tại sao nó như vậy? Tại sao định dạng bị thay đổi? – Ishan

+0

Điều đó đã giúp ích rất nhiều. Cảm ơn bạn. – Ishan

1

Hãy thử sử dụng phương pháp DateTime.ParseExact, trong đó bạn có thể chỉ định cả mặt nạ datetime và chuỗi phân tích gốc. Bạn có thể đọc về nó ở đây: MSDN: DateTime.ParseExact

+0

Có, bạn nói đúng. Điều này chỉ dành cho VB.NET – Diger

+0

Đây chắc chắn là câu hỏi VB6 vì tôi có thể thấy mã OP 'expenddt = CDate (edate) ' – Rahul

+2

@Rahul: Sử dụng chức năng chuyển đổi loại hình cơ bản không có nghĩa là anh ta sử dụng VB6: http://msdn.microsoft.com/en-us/library/s2dy91zy%28v=VS.100%29.aspx –

1

Cố gắng ngày chuyển đổi như thế này:

Dim expenddt as Date = Date.ParseExact(edate, "dd/mm/yyyy", 
System.Globalization.DateTimeFormatInfo.InvariantInfo); 

Hope this helps.

+5

Tôi nghĩ rằng đó phải là '" dd/MM/yyyy "'. 'mm' là số phút. – mbomb007

2

Không ai nói ra điều đó, nhưng trong một số trường hợp, các phương pháp khác thất bại trong việc nhận ra datetime ...

Bạn có thể thử này thay vào đó, sẽ chuyển đổi biểu diễn chuỗi được chỉ định của ngày và giờ thành giá trị thời gian và ngày tương đương

string iDate = "05/05/2005"; 
DateTime oDate = Convert.ToDateTime(iDate); 
MessageBox.Show(oDate.Day + " " + oDate.Month + " " + oDate.Year); 
1

Hãy thử để xem đoạn mã sau sẽ giúp bạn:

Dim iDate As String = "05/05/2005" 
Dim oDate As DateTime = Convert.ToDateTime(iDate) 
Các vấn đề liên quan