2013-02-20 2 views
0

날짜와 시간을 결합하여 하나의 날짜 시간 행에 삽입해야합니다. 여기 날짜와 시간 결합

내 코드입니다 : 첫 번째의 예외가있는 경우

입력 문자열이 올바른 형식

+0

디버깅 할 때 '날짜'형식은 무엇입니까? –

+0

문자열에서 'TimeSpan'을 (를) 파싱하는 대신'DateTime combinedDate = date.Add (DateTime.Now.TimeOfDay); – Habib

답변

4

아니 었 :

DateTime Headlinedate; 

try 
{ 
    DateTime date = Convert.ToDateTime(txtHeadlinedate.Text.Trim(), Ci); 
    string timestr = DateTime.Now.ToString("hh:mm:ss tt"); 
    DateTime combinedDate = date.Add(TimeSpan.Parse(timestr)); 
    Headlinedate = combinedDate; 

} 
catch { 
    Headlinedate = DateTime.Now; 
} 

나는 예외를 받고 있어요 코드 행을 사용하려면 txtHeadlinedate의 내용이 유효한지 확인하고 그에 따라 구문 분석해야합니다. 오류가 TimeSpan.Parse에 대한 호출에서 오는 경우

, 다음 버전은 문제를 해결해야합니다

DateTime date = Convert.ToDateTime(txtHeadlinedate.Text.Trim(), Ci); 
Headlinedate = date.Add(DateTime.Now.TimeOfDay); 
+0

고마워, 그것을 작동합니다 :) – Mandragorasprout

+0

첫 번째 줄 (텍스트 문자열의 변환)에서 시간 구성 요소를 절대 얻지 않으려면 '. 날짜'를 첫 번째 줄 끝에 추가 할 수 있습니다. –

2

타임 스팬은 "TT"을 구문 분석 할 수 없습니다. 이를 분석하려면 DateTime을 사용하거나 대신 HH : mm 형식을 사용하여 24 시간 값을 얻고 형식에서 tt 부분을 제거하십시오. 그런 다음 TimeSpan은이를 구문 분석 할 수 있습니다. 예를 들어 :

DateTime date = Convert.ToDateTime(txtHeadlinedate.Text.Trim(), Ci); 
string timestr = DateTime.Now.ToString("HH:mm:ss"); 
DateTime combinedDate = date.Add(TimeSpan.Parse(timestr)); 
Headlinedate = combinedDate; 
+1

"now"를 시간 문자열로 변환 한 다음 다시 문자열을 'TimeSpan'으로 변환 할 필요는 없습니다. –

+0

오른쪽은 ybo의 대답과 본질적으로 같습니다. 감사. – dotNET

0
date.Hour=DateTime.Now.Hour; 
date.Minute=DateTime.Now.Minute; 
date.Second=DateTime.Now.Second; 
+3

그것은 오히려 가난한 답변 왜 한 단계에서 할 수있는 3 단계를하고 있습니까? – MethodMan

+0

그리고 이것은 ..이 질문과 관련이 있습니다 ..? –

+0

먼저 'Now'속성을 두 번 이상 읽지 마십시오. 시계가 바뀔 수 있으므로 첫 번째 부분을 읽을 때 '09 : 59 : 59'이고 마지막 부분을 읽을 때 '10 : 00 : 00'이면 '09 : 00 : 00' 진정한 "지금"과는 거리가 멀다. 또한'date' 식별자가'DateTime' 값으로되어 있다면, 그렇게하는 것처럼 그것을 변경할 수 있습니다. 해당 속성은'get' 전용 (설정자 없음)입니다. Downvoted. –

0

사용 DateTime.TryParse 및 통과하여 txtHeadlinedate.Text.Trim()

DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) 

그리고 시간 범위 값을 추가 중 하나 어떤 일

DateTime myDate = ExistingTime.Date.AddHours(hh).AddMinutes(min); 

또는 // 계산을 사용하여 이 주간은이 순간부터 36 일입니다. t.

System.DateTime today = System.DateTime.Now; System.TimeSpan duration = new System.TimeSpan(36, 0, 0, 0); System.DateTime answer = today.Add(duration); 
0

내가이이 작동

DateTime Headlinedate; 
try 
     { 
      DateTime date = Convert.ToDateTime(txtHeadlinedate.Text.Trim(), Ci); 
      string timestr = DateTime.Now.ToString("MM/dd/yyyy HH:MM:ss");// here is the solution 
      DateTime combinedDate = date.Add(TimeSpan.Parse(timestr)); 
      Headlinedate = combinedDate; 

     } 
     catch { 
      Headlinedate = DateTime.Now; 
     } 
+1

분 동안 ""MM "'을 사용하지 마십시오. _months_입니다. 'Now'의 날짜 부분을 가져 오는 것이 목적이 아니 었습니다. ToString을 사용할 필요는 없습니다. –

0
DateTime date = Convert.ToDateTime(txtHeadlinedate.Text.Trim(), Ci);  
DateTime combinedDate = new DateTime(date.Year, date.Month, date.Day, DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second); 
-1

작동합니다 생각 (아래처럼)!

DateTime _dateOnly = DateTime.Now; 
DateTime _timeOnly = DateTime.Now; 

public DateTime Combined { get; set; } 

     public DateTime DateOnly 
     { 
      get { return _dateOnly.Date; } 
      set 
      { 
       _dateOnly = value.Date; 
       Combined = DateOnly.Add(TimeOnly.TimeOfDay); 
      } 
     } 

     public DateTime TimeOnly 
     { 
      get { return _timeOnly.ToLocalTime(); } 
      set 
      { 
       _timeOnly = value.ToLocalTime(); 
       Combined = DateOnly.Add(TimeOnly.TimeOfDay); 
      } 
     }