반응형
두 날짜 사이의 모든 날짜 목록 또는 배열 만들기
이 질문에는 이미 답변이 있습니다.
- 날짜 범위를 어떻게 반복합니까? 답변 15 개
X 축을 따라 날짜가있는 다중 시리즈 그래프를 생성 중입니다. 문제는 그래프의 모든 계열이 날짜 범위에서 동일한 날짜를 갖는 것은 아닙니다. 즉, 2 월 1 일에서 4 월 30 일을 선택하면 한 시리즈에 2 월 1 일에 시작하지만 3 월 말까지만 진행되는 데이터가있을 수 있지만 다른 시리즈에는 전체 날짜 범위에 대한 데이터가있을 수 있습니다.이것은 내가 만들어야 할 차트를 왜곡시킵니다. 쿼리 시작 부분에서 가져온 날짜 범위가 주어지면 날짜 목록을 생성하고 그래프로 표시 할 데이터를 채우고 데이터가없는 날짜에 해당 시리즈를 0으로 채 웁니다.
LINQ :
Enumerable.Range(0, 1 + end.Subtract(start).Days)
.Select(offset => start.AddDays(offset))
.ToArray();
For 루프 :
var dates = new List<DateTime>();
for (var dt = start; dt <= end; dt = dt.AddDays(1))
{
dates.Add(dt);
}
편집 : 시계열의 기본값으로 패딩 값의 경우 전체 날짜 범위의 모든 날짜를 열거하고 날짜가 있으면 시리즈에서 직접 날짜 값을 선택하거나 그렇지 않으면 기본값을 선택할 수 있습니다. 예를 들면 다음과 같습니다.
var paddedSeries = fullDates.ToDictionary(date => date, date => timeSeries.ContainsDate(date)
? timeSeries[date] : defaultValue);
public static IEnumerable<DateTime> GetDateRange(DateTime startDate, DateTime endDate)
{
if (endDate < startDate)
throw new ArgumentException("endDate must be greater than or equal to startDate");
while (startDate <= endDate)
{
yield return startDate;
startDate = startDate.AddDays(1);
}
}
나는 이것이 오래된 게시물이라는 것을 알고 있지만 확장 방법을 사용해보십시오.
public static IEnumerable<DateTime> Range(this DateTime startDate, DateTime endDate)
{
return Enumerable.Range(0, (endDate - startDate).Days + 1).Select(d => startDate.AddDays(d));
}
이렇게 사용하세요
var dates = new DateTime(2000, 1, 1).Range(new DateTime(2000, 1, 31));
자신의 날짜를 자유롭게 선택하십시오. 자신을 2000 년 1 월로 제한 할 필요는 없습니다.
우리의 거주자 마에스트로 Jon Skeet은 DateTimes와 다른 유형을 위해 이것을 할 수 있는 훌륭한
가지고 있습니다.
list = list.Where(s => s.startDate >= Input_startDate && s.endDate <= Input_endDate);
참고 URL :
https://stackoverflow.com/questions/3738748/create-an-array-or-list-of-all-dates-between-two-dates
반응형
'Programming' 카테고리의 다른 글
| 모든 확인란이 선택되어 있는지 확인 (0) | 2020.06.30 |
|---|---|
| 오류 : 'webpack'모듈을 찾을 수 없습니다 (0) | 2020.06.30 |
| SSH : 호스트 github.com 포트 22에 연결 : 연결 시간 초과 (0) | 2020.06.30 |
| AngularJs : 페이지 새로 고침 (0) | 2020.06.30 |
| Homebrew Cask를 통해 설치된 모든 통을 업그레이드하십시오. (0) | 2020.06.30 |