2012-05-05 5 views
0

C#으로 하루 중 특정 시간에 실행되는 함수를 설정하려고합니다. 이 코드는 작동하는 것으로 보이지만 그다지 확신 할 수는 없습니다. 이 문제를 해결할 더 좋은 방법이 있습니까? 불과 몇 시간, 분, 초를 개별적으로 비교 -알람 시계를 설정하는 더 좋은 방법이 있습니까?

이 내 코드

String thetimeis = DateTime.Now.ToString("HH:mm:ss"); 
DateTime alarmtimeStart = Convert.ToDateTime("12:00:00"); 
DateTime alarmtimeStop = Convert.ToDateTime("12:02:00"); 

if (Convert.ToDateTime(thetimeis) > alarmtimeStart && Convert.ToDateTime(thetimeis) < alarmtimeStop) 
{ 
    MessageBox.Show(thetimeis); 
} 
+1

가능한 복제 (http://stackoverflow.com/questions/1493203/alarm-clock-application-in-net). –

+0

문제는 여기 경보 응용 프로그램이 아닙니다. 하지만 문자열과 datetime의 관리 –

답변

1

왜 전환이 많이 필요한지 조금 혼란 스럽습니까?

if (DateTime.Now > alarmtimeStart && DateTime.Now < alarmtimeStop) 
{ 
    MessageBox.Show(thetimeis); 
} 
+0

내가 수동으로 텍스트 상자에서 시간을 수동으로 설정할 필요가 있기 때문에 – themis

+0

오, 당신은 "문자열 thetimeis = DateTime.Now.ToString ("HH : mm : ss "); "이 필요하지 않습니까? – themis

+0

잘 datetime.now와 함께 작동하지 않습니다. 시간을 직접 확인하지 않아도됩니다. – themis

2

예, 더 나은 방법이있다.

DateTime now = DateTime.Now; 
DateTime alarmtimeStart = Convert.ToDateTime("12:00:00"); 
DateTime alarmtimeStop = Convert.ToDateTime("12:02:00"); 

if (now.Hour >= alarmtimeStart.Hour && now.Minute >= alarmtimeStart.Minute && now.Second >= alarmtimeStart.Second && now.Hour <= alarmtimeStop.Hour && now.Minute <= alarmtimeStop.Minute && now.Second <= alarmtimeStop.Second) 
{ 
    MessageBox.Show(thetimeis); 
} 
+0

롤 우리는 또한 밀리 세컨드를 넣으면 "if checks"의 실행 시간이 현재 시간을 따라 잡을 것인가, if 문을 입력 할 것인가 : P. 고맙습니다 – themis

+2

@themhz : 8080을 사용하고 있지 않다면'if'는 단지 나노 초가 걸릴 것입니다. – Ryan

+0

DateTimes는'<'[operator] (http://msdn.microsoft.com/en- us/library/system.datetime.op_lessthan.aspx)이므로 구성 요소별로 구성 요소를 비교할 필요가 없습니다. – Douglas

4

작업을 예약하는 데 더 강력한 솔루션을 찾고 있다면 Quartz을 사용하는 것이 좋습니다. 사소한 일을하는 데는 과도한 일이지만, 사용하기 쉽고 내 솔루션을 사용하는 것보다 훨씬 쉽습니다.

+1

매우 감사합니다 – themis

2

날짜의 TimeOfDay 속성을 직접 비교할 수 없습니까?

편집 : [닷넷에서 알람 시계 응용 프로그램]의

TimeSpan thetimeis = DateTime.Now.TimeOfDay; 
TimeSpan alarmtimeStart = new TimeSpan(12, 0, 0); 
TimeSpan alarmtimeStop = new TimeSpan(12, 2, 0); 

if (thetimeis >= alarmtimeStart && thetimeis < alarmtimeStop) 
{ 
    MessageBox.Show(thetimeis); 
} 
+0

예, 훨씬 더 좋습니다 :) – Ryan

+0

당신이 말하는 것을 보여줄 수 있습니까? 매번 알람 시간을 수동으로 설정해야합니다. 그리고 몇일 안에 변경 될 수 있습니다. – themis

+0

@themhz 샘플 코드로 업데이트를 확인하십시오. – BlueMonkMN

관련 문제