2016-06-28 3 views
0
내가 가진

사이에 또는 예를 들어 그 같음 : 당신은 DayOfWeek 열거를 사용할 수날짜를 확인하는 방법 일 내 특정 날짜의 하루는 두 개의 문자열 일 사이에 있는지 확인하기 위해 두 개의 주어진 일

var startDay = "Saturday"; 
var endDay = "Tuesday"; 
DateTime myDate = DateTime.Now; 
if(myDate.DayofWeek >= startDay && myDate.DayofWeek <= endDay){ 
//some code here... 
} 
+1

정말요? 그 중 하나는 OP가해야 할 한 가지 확실한 열거 형으로 문자열을 변환하는 것입니다. 그러나 여기서 질문은 두 평일 사이에 날짜가 있는지 파악하는 것입니다. – juunas

답변

2

당신은 DayOfWeek 열거에 그 문자열을 구문 분석 할 수 DayOfWeek의 값 (0) 일요일부터 토요일까지 이동 (6). 그리고 주중 시작으로 정의한 내용이나 사이의 의미는을 의미하므로 값을 조정해야 할 수도 있습니다. 그래서 여기

는 제안이다 :

int startDayAsInt = (int)startDayOfWeek; // the parsed value from above 
int endDayAsInt = (int)endDayOfWeek; 
int myDateAsInt = (int)myDate.DayOfWeek; 

if (endDayAsInt < startDayAsInt) endDayAsInt += 7; 
if (myDateAsInt < startDayAsInt) myDateAsInt += 7; 
if (myDateAsInt >= startDayAsInt && myDateAsInt <= endDayAsInt) 
    // do something 

가 시작 전날 경우는 "다음"일주일에 일을 프로젝트로이 모든 조합에 대해 작동합니다.

+0

Vogt 고맙습니다. – Slan

3

.

if(myDate.DayOfWeek >= DayOfWeek.Tuesday 
    && myDate.DayOfWeek <= DayOfWeek.Saturday) 
{ 
    // This would catch the days from Tuesday to Saturday 
} 

토요일부터 화요일까지 요일을 잡으려면 코드를 조금 바꿔야합니다.

if(myDate.DayOfWeek >= DayOfWeek.Saturday 
    || myDate.DayOfWeek <= DayOfWeek.Tuesday) 
{ 
    // This would catch the days from Tuesday to Saturday 
} 

당신의 startDateendDate를 변경하는 경우. 그런 다음 첫 번째 구문을 분석하고 몇 가지 추가 검사를 수행해야합니다.

var startDay = "Saturday"; 
var endDay = "Tuesday"; 
DayOfWeek startDayOfWeek, endDayOfWeek; 
if (!Enum.TryParse(startDay, out startDayOfWeek)) 
    // error handlnig 
if (!Enum.TryParse(endDay, out endDayOfWeek)) 
    // error handlnig 
DateTime myDate = DateTime.Now; 
if(myDate.DayofWeek >= startDayOfWeek && myDate.DayofWeek <= endDayOfWeek){ 
    //some code here... 
} 

을하지만 그건 또 다른 문제를 제공합니다 :

DayOfWeek startDayOfWeek; 
DayOfWeek endDayOfWeek; 
if (!Enum.TryParse(startDay, out startDayOfWeek)) 
{ 
    // Something wrong happened and you have to handle it. 
} 
if (!Enum.TryParse(endDay, out endDayOfWeek)) 
{ 
    // Something wrong happened and you have to handle it. 
} 
if (
     ((int)startDayOfWeek < (int)endDayOfWeek 
     && myDate.DayOfWeek >= startDayOfWeek 
     && myDate.DayOfWeek <= endDayOfWeek) 
    || ((int)startDayOfWeek > (int)endDayOfWeek 
     && (myDate.DayOfWeek >= startDayOfWeek 
      || myDate.DayOfWeek <= endDayOfWeek)) 
    ) 
{ 

} 
+0

OP가 찾고있는 답변이 토요일과 화요일 사이의 날입니까? 이것은 화요일과 토요일 사이에 있으며 정확히 반대입니다. – juunas

+0

2 일 동안 제 질문에 언급 한 것이 동적 인 경우 언제든지 변경할 수 있으므로이 시나리오에서는 솔루션이 작동하지 않습니다. – Slan

+0

@ 주니어 당신이 맞습니다 :) 나는 내 대답을 수정했습니다. – Christos