2012-08-10 9 views
2

24 시간 형식 시간으로시와 분을 포함하는 테이블에 varchar(5) 열이 있습니다. 이 24 시간 형식을 12 시간 형식으로 변환하고 마지막으로이 12 시간 형식 시간을 Date 값과 함께 DateTime 변수에 포함합니다. 아래는 데모의 예입니다. 예시간으로 변환 12 시간 형식 24 시간 형식의 시간이 포함 된 문자열

를 들어

8:18 오전 8시 18분 0초로 변환해야하고 할 수 2012년 8월 10일 오전 8시 18분 50초 같은 날짜로 을 포함해야한다

DB의 DateTime 열에 저장하십시오.

22:20......10:20:00 PM.......8/10/2012 10:20:00 PM 

날짜는 2012/08/08 또는 2012년 7월 8일 같은 어떤 날짜 값이 될 수 있습니다 현재 날짜되지 않습니다

+0

사용자 입력에서 해당 시간 값을 검색하고 위에서 언급 한 12 시간 형식으로 변환 한 다음 레이블에 저장된 날짜 값을 포함시키고이를 DB에 삽입합니다. –

+2

'DateTime'값에 연결된 표현이 없습니다. 그럼 왜 곧 12h 포맷으로 변환하고 싶습니까? 잠시 후 'DateTime'으로 변환하면됩니까? – CodesInChaos

+0

내가 원하는 것은 문자열 dt = "8/14/2012"와 같은 문자열에 날짜가 있고 "8:18"과 같은 24 시간 형식의 문자열에 시간 값이 있습니다 ....이제 내가 원하는 것은이 두 값을 결합하여 최종 datetime과 같은 datetime 값을 만들어야한다는 것입니다. (2012/08/14 8:18:00 AM) –

답변

9

:

string input = "22:45"; 

var timeFromInput = DateTime.ParseExact(input, "H:m", null, DateTimeStyles.None); 

string timeIn12HourFormatForDisplay = timeFromInput.ToString(
    "hh:mm:ss tt", 
    CultureInfo.InvariantCulture); 

var timeInTodayDate = DateTime.Today.Add(timeFromInput.TimeOfDay); 

이제 고려해야 할 중요한 부분은 다음과 같습니다.

  • 구문 분석 형식은 "H:m"을 사용하기 때문에 0을 사용하여 24 시간 값으로 가정하면 한 자리 숫자 앞에 시간 또는 분이 표시됩니다.
  • 인쇄 형식은 사용자가 원하는 형식으로 보이기 때문에 "hh:mm:ss tt"을 사용하지만 CultureInfo.InvariantCulture을 사용해야 AM/PM 지정자가 실제로 AM인지 PM인지 알 수 있습니다. 다른 문화권을 사용하는 경우 AM/PM 지정자가 변경 될 수 있습니다.
  • 전체 날짜와 시간은 DateTime.Today을 기반으로 구성되며, 오늘 날짜가 0으로 설정된 시간을 반환 한 다음 입력 된 시간을 추가합니다.

    var timeInAnotherDate = new DateTime(2000, 1, 1).Add(timeFromInput.TimeOfDay); 
    

    참고 자료 :

는 대신 사용할 수있는 또 다른 일로부터 최종 날짜와 시간을 만들려면

+0

안녕하세요 @ João Angelo 최종 날짜 시간 만들기 var timeInAnotherDate = new DateTime (2000, 1, 1) .Add (timeFromInput.TimeOfDay); datetime 생성 날짜를 수동으로 전달했습니다. 이 날짜가 항상 문자열에서 입력되어야한다고 생각하면 어떨까요? 수동으로 입력 한 인수가 아닌 당신의 도움은 매우 높이 평가됩니다. –

+0

'DateTime.ParseExact'를 날짜 형식으로 사용하십시오. 예를 들어, ""M/d/yyyy "'. –

1
create function dbo.COMBINE_DATE_TIME(
    @DatePart DateTime,     -- DateTime 
    @TimePart varchar(5))    -- Time 
    returns DateTime 
as begin 
    return DATEADD(day, DATEDIFF(day,0,@DatePart), 
    CONVERT(DateTime,ISNULL(@TimePart,''),14)) 
end 
go 
0
string strDate = DateTime.ParseExact("8:18","HHmm",CultureInfo.CurrentCulture).ToString("hh:mm tt"); 
당신이 뭔가를 할 수
+0

형식이 "HH : mm"이라고 생각하지만, 이 경우에 작업 할 문자열은 "08:18"이어야합니다. – Chepene

관련 문제