2012-04-20 2 views

답변

1

왜 날짜를 문자열로 유지합니까?

Session["DateLesson"] = date1; 

을 그리고 이런 식으로 검색 :

당신은 단순히 이런 식으로 저장할 수

문자열로하지만 초기 형식의 개체로 값을 보관하지 마십시오
var datelesson = (DateTime)Session["DateLesson"]; 
+0

dd.mm.yyyy 형식이어야합니다. – Alex

4

대부분의 로캘에서 마침표는 유효한/표준 구분 문자가 아닙니다. 함수를 읽는 방법을 알려면 형식 문자열과 함께 DateTime.ParseExact()를 사용해야합니다. 더 중요한 것은 datetime으로 다시 읽는 것이 주요 목표인지, 왜 datetime을 세션에 그대로 두는 것입니까? 그게 way 더 효율적이고 쉽게, 그리고 더 maintainable 보인다.

+0

이것은 정확하지 않습니다. 마침표 *는 일부 로케일의 표준 분리 문자입니다 (예 : 러시아). ParseExact를 사용하든 ParseExact를 사용하든간에 OP는 IFormatProvider 매개 변수를 허용하는 오버로드를 사용하면 도움이됩니다. – phoog

+0

@phoog - 족제비 단어를 추가했습니다. 행복? –

0

:

public DateTime? DateLesson 
{ 
    get 
    { 
     DateTime? dateTime = Session["DateLesson"] as DateTime?; 
     if (dateTime.HasValue) // not null 
     { 
      // use dateTime.Value 
     } 
    } 
    set 
    { 
     Session["DateLesson"] = value; 
    } 
} 
+0

*** 이유는 무엇입니까? – abatishchev

+0

잘 모르겠다 - 문제의 세부 사항을 알려준 것이 나에게 합당한 해결책으로 보였으므로 반대 의견을 제시했다. –

1
string value = "20.04.2012"; 
DateTime datetime = DateTime.ParseExact(value, "dd.MM.yyyy", null); 

이 돌아갑니다 4/20/2012 12:00:00:00 AM

+0

문자열 값 = 세션 [ "DateLesson"]. ToString(); DateTime date = DateTime.ParseExact (값, "dd.MM.yyyy", null); 문자열이 유효한 DateTime으로 인식되지 않았습니다. – Alex

관련 문제