Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 1009499
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 16, 20262026-05-16T08:56:20+00:00 2026-05-16T08:56:20+00:00

Simple question. I have an ordered collection of dates. They are UK dates btw

  • 0

Simple question. I have an ordered collection of dates. They are UK dates btw

01/01/10
01/02/10
01/03/10
01/04/10
02/04/10
03/04/10
04/04/10

And I want to convert this into a collection of date ranges

01/01/10 -> 01/01/10
01/02/10 -> 01/02/10
01/03/10 -> 01/03/10
01/04/10 -> 04/04/10

Just to clarify, I’m trying to convert any consecutive dates into a range. so the first 3 dates are stand alone and the last 4 get converted into a range 1st of April to 4th of April.

Now I can do this using loops but it’s not very elegant. Does any one have any solutions out there that are?

Thanks

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-16T08:56:21+00:00Added an answer on May 16, 2026 at 8:56 am

    Given that you want to determine ranges of consecutive date ranges, I think your only option is, as you say a loop. You can do it in a single pass though, and put it in an extension method so it’ll operate on any IList<DateTime>, for example:

    // purely an example, chances are this will have actual, y'know logic in live
    public class DateRange
    {
        private List<DateTime> dates = new List<DateTime>();
    
        public void Add(DateTime date)
        {
            this.dates.Add(date);
        }
    
        public IEnumerable<DateTime> Dates
        {
            get { return this.dates; }
        }
    }
    
    public static IEnumerable<DateRange> GetRanges(this IList<DateTime> dates)
    {
        List<DateRange> ranges = new List<DateRange>();
        DateRange currentRange = null;
    
        // this presumes a list of dates ordered by day, if not then the list will need sorting first
        for( int i = 0; i < dates.Count; ++i )
        {
            var currentDate = dates[i];
            if( i == 0 || dates[i - 1] != currentDate.AddDays(-1))
            {
                // it's either the first date or the current date isn't consecutive to the previous so a new range is needed
                currentRange = new DateRange();
                ranges.Add(currentRange);
            }
    
            currentRange.Add(currentDate);
        }
    
        return ranges;
    }
    

    You could also make it even more generic by passing in an IEnumerable<DateTime>:

    public static IEnumerable<DateRange> GetRanges(this IEnumerable<DateTime> dates)
    {
        List<DateRange> ranges = new List<DateRange>();
        DateRange currentRange = null;
        DateTime? previousDate = null;
    
        // this presumes a list of dates ordered by day, if not then the list will need sorting first
        foreach( var currentDate in dates )
        {
            if( previousDate == null || previousDate.Value != currentDate.AddDays(-1) )
            {
                // it's either the first date or the current date isn't consecutive to the previous so a new range is needed
                currentRange = new DateRange();
                ranges.Add(currentRange);
            }
    
            currentRange.Add(currentDate);
            previousDate = currentDate;
        }
    
        return ranges;
    }
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

This is a (hopefully) really simple question - I have been told recently that
I have a very simple question. I want to test whether a particular port
Here's a very simple question. I have an SP that inserts a row into
A simple question: I have a Model-View-Controller setup, with Models accessing a SQL database.
Simple question: do I have to delete or delete [] c ? Does the
Pretty simple question: When i have a persistable object, it usually has a property
I have a simple question. Is there a way ( using reflections I suppose
I have a simple question and wish to hear others' experiences regarding which is
I have a simple question related to one-line programming. First an example: function test(a)
I have a simple question about Java's XML API and I hope there's a

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.