Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

Find position in array?

Posted on 2008-06-17
7
Medium Priority
?
1,102 Views
Last Modified: 2012-05-05
I have a question... Not really sure this is the way to do it, so i am open to any other suggestions..

I want to split a 24 hour day up into 2 hour periods... I want to then look at the current hour and get the period this hour fits into.

So i built an array:

int[] HourPeriods = new int[12] { 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24 };

And can get the current hour, and loop through the hour periods...

        foreach (int hr in HourPeriods)
        {
            //DateTime.Now.Hour;
        }

But how to i do this? Say if the hour is 15 how do i get the 16 period from the array???

Nugs
0
Comment
Question by:Nugs
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
7 Comments
 
LVL 18

Expert Comment

by:Joel Coehoorn
ID: 21807813
I think you're making it harder than it has to be:
int PeriodIndex = DateTime.Now.Hour / 2;
0
 
LVL 15

Assisted Solution

by:Solar_Flare
Solar_Flare earned 400 total points
ID: 21807821
well you can test the DateTime.Now.Hour against the int

 foreach (int hr in HourPeriods)
        {
            if (DateTime.Now.Hour < hr && DateTime.Now.Hour > (int-2))
            {
                  //datetime.now.hour is less than 2 hours before int hr
            }
        }
0
 
LVL 2

Author Comment

by:Nugs
ID: 21808058
jcoehoorn: I think you are right that i am making it more complex than it need be. Unfortunatley your example is way off from what i am looking for.

Solar_Flare: Just by looking at your example i could see it would work. But after much consideration and jcoehoorn comment i decided it was to complicated for what needed to be done...

What do you guys think of the attached code...

Since it is the hours i am looking at these number will always be between 1 and 24... Say i run the code now at 3pm (15 hr) this will increment it to 16 hundred hour...

Nugs

        int HourPeriodIndex = 1;
        if (DateTime.Now.Hour % 2 != 0)
        {
            HourPeriodIndex = DateTime.Now.Hour + 1;
        }
        else
        {
            HourPeriodIndex = DateTime.Now.Hour;
        }

Open in new window

0
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
LVL 18

Expert Comment

by:Joel Coehoorn
ID: 21808820
Try this:
0
 
LVL 18

Accepted Solution

by:
Joel Coehoorn earned 1200 total points
ID: 21808829
Ah! It lost my code snippet!  This should work because the interger division will truncate any decimal before multiplying by 2 again:
int HourPeriod = ( DateTime.Now.Hour / 2 ) * 2;

Open in new window

0
 
LVL 11

Assisted Solution

by:Mihai Stancescu
Mihai Stancescu earned 400 total points
ID: 21819522
You can try this:

Hope this helps!

Regard,
Mishu
ArrayList HourPeriods = new ArrayList(new int[12] { 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24 });
 
            int hour = DateTime.Now.Hour;
            int theIndex = -1;
            try
            {
                if (HourPeriods.Contains(hour))
                {
                    theIndex = HourPeriods.IndexOf(hour);
                }
            }
            catch (Exception)
            {
                theIndex = HourPeriods.IndexOf(hour + 1);
            }

Open in new window

0
 
LVL 2

Author Closing Comment

by:Nugs
ID: 31468160
Thanks everyone. I eventually opted for jcoehoorn simpler solution here, but none of the solutions posted were wrong by any means so i split the points... Thanks for all the input.
0

Featured Post

Hire Technology Freelancers with Gigs

Work with freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely, and get projects done right.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article describes a simple method to resize a control at runtime.  It includes ready-to-use source code and a complete sample demonstration application.  We'll also talk about C# Extension Methods. Introduction In one of my applications…
Exception Handling is in the core of any application that is able to dignify its name. In this article, I'll guide you through the process of writing a DRY (Don't Repeat Yourself) Exception Handling mechanism, using Aspect Oriented Programming.
This tutorial will teach you the special effect of super speed similar to the fictional character Wally West aka "The Flash" After Shake : http://www.videocopilot.net/presets/after_shake/ All lightning effects with instructions : http://www.mediaf…
Sometimes it takes a new vantage point, apart from our everyday security practices, to truly see our Active Directory (AD) vulnerabilities. We get used to implementing the same techniques and checking the same areas for a breach. This pattern can re…

636 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question