2009-04-07 5 views
0

C#을 사용하여 ASP.net에서 날짜 연산을 수행해야합니다.mmm-yy 형식의 문자열 C#에서의 시간 형식

  1. 나는 형식 '7 ~ 05'이어야 입력 (음-YY 형식과 문자열 형 -) ... 내가이 확인 할 수있는 방법 를 할 날짜 ???? 또는 사용자가 문자열로 입력하는 내용으로 어떻게 확인할 수 있습니까 ???

  2. 그 검증 후, 데이터베이스의 값을 비교 THT 필요 (예를 들어 열 이름 값 (예를 들어)을 갖는다 2007년 4월 31일 buy_period).

어떻게 둘을 비교하기위한 쿼리를 작성할 수 있습니까 ?? (두 날짜가 서로 다른 형식이 됨)

나를 도와 줄 수 있습니까?

답변

1

DateTime 값으로 문자열을 확인하고 그것을 구문 분석 TryParseExact 방법을 사용

DateTime month; 
if (DateTime.TryParseExact("MMM-yy", CultureInfo.InvariantCulture, DateTimeStyles.None, out month)) { 
    // parsing was successful 
} 

DateTime 값은 완전한 값을 채우기 위해 달과 시간 0:00 첫날을 사용합니다, "jul-05"과 같은 문자열은 2005-07-01 00:00:00.0000과 같은 완전한 DateTime 값으로 파싱되므로 해당 월의 시작 지점이됩니다. 당신은 단지 시작에 날짜와의 끝점을 비교할 수 있습니다 지금

DateTime nextMonth = month.AddMonths(1); 

:와

는 당신이 얻을 당신은 또한 다음 달의 시작점을 필요로하는 데이터베이스의 날짜에이를 비교하려면 이 방식의 달은 다음과 같습니다.

where date >= @Month and date < @NextMonth 
0

잘 검증과 비교는 두 가지 다른 조작이어야합니다. 그래서 당신은 검증을 위해 많은 것들을 할 수 있습니다.

검증 옵션 :

1.)에 문자열을 분할 "-"과 음 부분은 달의 목록에 있는지 확인하고 번호가 유효한지 확인하십시오.

2.) 정규 표현식으로 고급 표현이지만 한 줄로 줄일 수 있습니다. 관심이 있으시면 RegEx를 찾아보십시오.

문자열의 유효성을 검사 한 후이를 DateTime 개체로 변환하고 DateTime.Compare()를 사용하여 다른 값과 비교합니다.

희망이 있습니다.

5
DateTime myDateTime = DateTime.ParseExact(input, "MMM-yy"); 

그런 다음 행복하게 서버에 비교를 매개 변수로 저장 프로 시저 (등)에 전달 (또는 날짜 시간이 기존 쿼리의 결과로 반환 사용)

+0

+1하지만 모든 데이터가 프로그램에 datetime 형식으로 저장되어야한다는 점을 강조하고 싶습니다. 읽고 나서 사용자에게 보여줄 때만 문자열을 사용하십시오. –

+0

사실, 'MMM'이라고 생각합니다. mmm은 존재하지 않습니까? mm은 분/시간입니다. 사건이 문자열에 중요하다고 생각합니다. –

+0

순수 .Krome이 맞습니다 – Lucas

2

수 있습니다 .NET Framework에는 DateTime struct :: Parse, TryParse, ParseExact, TryParseExact에 대한 몇 가지 멋진 메서드가 있습니다.

이 정보는 discussed on MSDN입니다.

맞춤 날짜 문자열을 제공하기 때문에 ParseExact 또는 TryParseExact를 사용해야합니다. 나중에 구문 분석에 실패하면 나중에 예외가 throw되지 않습니다.

그래서 ..이 시도 할 수 있습니다 ...

using System.Globalization; 

CultureInfo MyCultureInfo = new CultureInfo("en-US"); 
string myString = "Jul-05"; 
DateTime myDateTime = DateTime.ParseExact(myString, "MMM-yy", MyCultureInfo)) 
Console.WriteLine(); 

값 myDateTime은 다음 날짜 시간 속성으로 데이터베이스에 전달하고에 대해 확인할 수 있습니다.

EDIT : 저번 입력시 Rowland에 의해 저주당했습니다.

편집 2 : "MMM-yy"에 유의하십시오.MSDN page에 명시된 바와 같이 MMM은 "현재 System.Globalization.DateTimeFormatInfo.AbbreviatedMonthNames 속성에 정의 된 달의 축약 된 이름을 나타냅니다." mmm (소문자)이 잘못되었습니다.

0

당신은

DateTime date = DateTime.ParseExact(value, "MMM-yy", null); //checked at http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx 

를 사용할 수있는 다음 SQL 명령 매개 변수에 해당 날짜를 사용합니다.

+0

4x m? 대문자가 아니라 소문자입니까? 그것을 확인하고 싶을 수도 있습니다, 친구 : –

+0

Ok amended ... :) –