2011-12-26 8 views
12

vb프레임 워크 3.5을 사용하여 asp.net 사이트를 개발 중입니다.문자열을 날짜 시간으로 변환

임 내가

내가 문자열 변수 및 날짜는 현재 일/월/년으로 텍스트 상자에서 오는 그 안에 저장되어있는 변수 sdate이, CDATE 기능을 사용하여 시도 날짜 에 문자열 데이터를 변환 어려움을 겪고 하루 추가 또는 하루 빼기 작업을 수행해야 할 때이 문자열을 날짜 변수로 변환 할 싶어요.

이 문제를 해결하는 방법을 알려주세요. 제 3 행에서 오류가 발생했습니다. String was not recognized as a valid DateTime. 나는 다음과 같이 할 시도했지만 오류가

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

을 제공하지만 난 날짜를 입력 할 문자열에서

변환으로 오류가 발생하는 것은 유효하지 않습니다.

문자열에서 Date을 어떻게 얻을 수 있습니까?

+1

명확히하십시오 - 당신은 VB6 또는 VB.NET을 사용하고 있습니까? – Oded

+0

죄송합니다. 제 질문을 수정했습니다. – Ishan

답변

31

정확한 형식 문자열과 함께 Date.ParseExact 또는 Date.TryParseExact을 사용해야합니다.

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

또는

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) 

또는

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

Thank you.When 내가 디버그 expenddt valate # 12/31/2011 # edate 값은 31/12/2011 때 감사합니다. 왜 그래야만하지? 형식이 변경되는 이유는 무엇입니까? – Ishan

+0

많은 도움이되었습니다. 고맙습니다. – Ishan

1

datetime 마스크와 원본 구문 분석 문자열을 모두 지정할 수있는 DateTime.ParseExact 메서드를 사용해보십시오. 당신은 여기에 대해 읽을 수 있습니다 : MSDN: DateTime.ParseExact

+0

네, 맞습니다. 이것은 VB.NET만을위한 것입니다. – Diger

+0

VB6의 질문입니다. OP의 코드'expenddt = CDate (edate)'를 볼 수 있습니다. – Rahul

+2

@Rahul : Visual Basic 형식 변환 함수를 사용한다고해서 VB6이 사용되는 것은 아닙니다. /msdn.microsoft.com/en-us/library/s2dy91zy%28v=VS.100%29.aspx –

1

한번에 변환 날짜를 다음과 같이 :

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

희망이 도움이됩니다.

+5

"dd/MM/yyyy"이어야한다고 생각합니다. 'mm'은 분을 나타냅니다. – mbomb007

2

아무도이 문제를 언급하지 않지만 다른 방법은 날짜를 인식하지 못하는 경우 ...에

이 시도 할 수 있습니다 대신에 날짜 및 시간의 지정된 문자열 표현을 동등한 날짜 및 시간 값으로 변환합니다. 다음과 같은 코드가 도움이된다면

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

봅니다 볼 수 있습니다 :

Dim iDate As String = "05/05/2005" 
Dim oDate As DateTime = Convert.ToDateTime(iDate) 
관련 문제