Q & A

시삽: 레드플러스 님 
게시판 이동:
 제목 : 문자열이 유효한 DateTime으로 인식되지 않습니다.
글번호: 389
작성자: 윤민용
작성일: 2007/01/08 오전 9:37:00
조회수: 11169
부서별로 뛴것을 월별로 분기별로 통계내는 프로그램인데..

현재 두페이지가 에러를 내버리네요 워낙 초보다 보니 도움을 요청해봅니다

무식하게 소스올려서 죄송합니다 분석할정도의 능력이 잘안되네요ㅜ.ㅜ

'/run' 응용 프로그램에 서버 오류가 있습니다.
--------------------------------------------------------------------------------

설명: 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 스택 추적을 검토하여 발생한 오류
및 코드에서 오류가 발생한 위치에 대한 자세한 정보를 확인하십시오.

예외 정보: System.FormatException: 문자열이 유효한 DateTime으로 인식되지 않습니다.

소스 오류:

현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 생성되었습니다. 아래의 예외 스택 추적을 사용하여 예
외의 원인 및 위치 정보를 확인할 수 있습니다.  

스택 추적:


[FormatException: 문자열이 유효한 DateTime으로 인식되지 않습니다.]
   System.DateTimeParse.Parse(String s, DateTimeFormatInfo dtfi, DateTimeStyles styles) +124
   System.DateTime.Parse(String s) +27
   Run.dayinput.GetSday(String date) in D:\service\run\dayinput.aspx.cs:403
   Run.dayinput.Page_Load(Object sender, EventArgs e) in D:\service\run\dayinput.aspx.cs:68
   System.Web.UI.Control.OnLoad(EventArgs e) +127
   System.Web.UI.Control.LoadRecursive() +101
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean
includeStagesAfterAsyncPoint) +2588




--------------------------------------------------------------------------------
버전 정보: Microsoft .NET Framework 버전:2.0.50727.42; ASP.NET 버전:2.0.50727.42

에러나는 페이지의 각 각 68번째줄 403번째줄 내용입니다

68번째줄

                        // 분기기준 업데이트 부분
                        string Sday = this.GetSday(util.Date) ;
                        string Eday = this.GetEday(util.Date) ;    <-이부분


403번째줄

                private string GetEday(string date)
                {
                        DateTime dt1 = DateTime.Parse(date); <-이부분
                        int nMon = (int)dt1.Month;
                        DateTime dt = DateTime.Now;


또다른 페이지

'/run' 응용 프로그램에 서버 오류가 있습니다.
--------------------------------------------------------------------------------



문자열이 유효한 DateTime으로 인식되지 않습니다.
설명: 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 스택 추적을 검토하여 발생한 오류
및 코드에서 오류가 발생한 위치에 대한 자세한 정보를 확인하십시오.

예외 정보: System.FormatException: 문자열이 유효한 DateTime으로 인식되지 않습니다.

소스 오류:

현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 생성되었습니다. 아래의 예외 스택 추적을 사용하여 예
외의 원인 및 위치 정보를 확인할 수 있습니다.  

스택 추적:


[FormatException: 문자열이 유효한 DateTime으로 인식되지 않습니다.]
   System.DateTimeParse.Parse(String s, DateTimeFormatInfo dtfi, DateTimeStyles styles) +124
   System.DateTime.Parse(String s) +27
   Run.dayinput.GetSday(String date) in D:\service\run\dayinput.aspx.cs:403
   Run.dayinput.Page_Load(Object sender, EventArgs e) in D:\service\run\dayinput.aspx.cs:68
   System.Web.UI.Control.OnLoad(EventArgs e) +127
   System.Web.UI.Control.LoadRecursive() +101
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean
includeStagesAfterAsyncPoint) +2588

--------------------------------------------------------------------------------
버전 정보: Microsoft .NET Framework 버전:2.0.50727.42; ASP.NET 버전:2.0.50727.42

68번째줄

if(!IsPostBack)
                        {
                                string today = util.Date ;
                                stday.Text = GetSday(today);             <-이부분
                                enday.Text  = today.Substring(0,10) ;

                                startday = stday.Text.ToString() ;
                                endday = enday.Text.ToString() ;
                        }
                        else
                        {
                                string returnDay = null;
                                if(DropDownList1.SelectedValue.ToString()!="blank")
                                {
                                        returnDay = SetDay(DropDownList1.SelectedValue) ;
                                        int nGubun = 0;
                                        nGubun = returnDay.IndexOf("/",0,returnDay.Length) ;

                                        stday.Text = returnDay.Substring(0,10) ;
                                        enday.Text = returnDay.Substring(11,10) ;

                                }

                                startday = stday.Text.ToString() ;
                                endday = enday.Text.ToString() ;

                        }


403번째줄
        private string GetSday(string date)
                {
                        DateTime dt1 = DateTime.Parse(date);     <-이부분
                        int nMon = (int)dt1.Month;
                        DateTime dt = DateTime.Now;

                        if(nMon < 4)
                                return dt.Year.ToString() + "-" + "01-01";
                        else if(nMon <7)
                                return dt.Year.ToString() + "-" + "04-01";
                        else if(nMon < 10)
                                return dt.Year.ToString() + "-" + "07-01";
                        else
                                return dt.Year.ToString() + "-" + "10-01";

                }






이 두페이지는 chung.cs를 불러오는데

using chung.DB;
using chung.Util;


거기서 날짜관련된 소스

                        ///////////////////////////////////////////////
                        // 메소드명 : ToDate
                        // 인자설명 : get;
                        // 리턴형식 : string
                        // 사용목적 : 현재 날짜를 반환 : 2003-06-25
                        ///////////////////////////////////////////////

                        public string Date
                        {
                                get
                                {
                                        string datetime = DateTime.Now.ToString().Substring
(0,10) + " " + DateTime.Now.TimeOfDay.ToString().Substring(0,5);
                                        return datetime;
                                }

                        }

                        ////////////////////////////////////////////////
                        // 메소드명 : 월에 일수를 구해주는 함수
                        // 인자설명 : 스트링 값으로 "2004-10-10" 넣어주면
                        // 리턴 값  : 31일이라는 일수를 리턴한다.
                        ////////////////////////////////////////////////
                        
                        public int GetDays(string date)
                        {
                                DateTime dt = DateTime.Parse(date) ;
                                int year = int.Parse(dt.Year.ToString().ToString()) ;
                                int month = int.Parse(dt.Month.ToString()) ;
                                
                                return DateTime.DaysInMonth(year,month) ;
                        }

                }

        }

}


과연 이부분이 맞는지 잘모르겠네요 죄송합니다

그래도 도움좀 주시면 감사하겠습니다..ㅠ.ㅠ

원인좀 알려주시고 설명좀 부탁드리겠습니다

현재 작업하는 시스템입니다

windows 2003 r2 64bit
sql 2005 server express
iis  6.0
 
이전 글   다음 글 삭제 수정 답변 글쓰기 리스트
  Administrator
  2007-01-09 오전 12:30:31
소스만 봐서는 모르겠구요...
아무래도 날짜값이 잘 못 입력이 된 듯 합니다.

예를들면, 2007-01-09 식으로 날짜가 입력되어야 하는데,
[20070109]  식으로 조금이라도 잘못된 정보가 입력된
경우에 위와 같은 에러메시지가 많이 나타납니다.
다시 한 번 소스를 살펴보시면서
정확한 날짜 값이 입력되는지 확인해 보시기 바랍니다.

(댓글을 남기려면 로그인이 필요합니다.)

관련 아티클 리스트
  제       목 파일 작성자 작성일 조회
이전글 SqlDataSource와 ObjectDataSource 질문 - 송우상 2007-02-26 3281
현재글 문자열이 유효한 DateTime으로 인식되지 않습니다. (1) - 윤민용 2007-01-08 11169
다음글 aspx에 질문이 있습니다~(1) - 방민규 2006-12-27 3113
 
손님 사용자 Anonymous (손님)
로그인 Home