Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1263
  • Last Modified:

C# working with TIME only, and no DATE

I've been trying to find a way to determine if my current time of day is between a start and stop time. I don't really care about the date, and actually would prefer to not use it at all.   I've tried a number of approach angles on this, but am not having success.  I'm a novice, so assume nothing on my part when proposing a solution, please.

My current code is:
if (DateTime.Compare(DateTime.Now, dtStart) > 0 && DateTime.Compare(DateTime.Now, dtEnd) < 0)
In this, dtStart = {5/15/2009 7:00:00 AM}  and dtEnd = {5/15/2009 12:30:00 PM}

It's currently 7:39 AM so we are between those times, yet my DateTime.Compare above yields False, so my code bails out on the else of the if/else.  

I'm TOTALLY open to approaching this from a different angle if one is more reliable.  I just hate working with the DateTime object.  It is exceedingly confusing to me.
0
DJGray
Asked:
DJGray
1 Solution
 
Anurag ThakurTechnical ManagerCommented:
you can use the time class from the following link to achieve the functionality
http://www.csharphelp.com/archives4/archive682.html
0
 
ToddBeaulieuCommented:
Hmm. Your code looked ok to me. I ran a quick test and it seems to work fine for me.

I set the end date to an earlier time and it evaluated as being outside the range.

		DateTime dtStart = DateTime.Parse("5/15/2009 7:00:00 AM");
		DateTime dtEnd = DateTime.Parse("5/15/2009 12:30:00 PM");
		
		if (DateTime.Compare(DateTime.Now, dtStart) > 0 && DateTime.Compare(DateTime.Now, dtEnd) < 0)
			Console.WriteLine("The current Time falls WITHIN the test range.");
		else
			Console.WriteLine("The current Time falls OUTSIDE the test range.");

Open in new window

0
 
Fernando SotoRetiredCommented:
Hi DJGray;

The code snippet below worked for me. It is using your if statement. Can you post how you are initializing dtStart and dtEnd.

Fernando
DateTime dtStart = new DateTime(2009, 5, 15, 7, 0, 0);
DateTime dtEnd = new DateTime(2009, 5, 15, 12, 30, 0);
 
if (DateTime.Compare(DateTime.Now, dtStart) > 0 && DateTime.Compare(DateTime.Now, dtEnd) < 0)
{
    Console.WriteLine("I am in the time frame");
}
else
{
    Console.WriteLine("I am NOT in the  time frame");
}

Open in new window

0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
DJGrayAuthor Commented:
Sure.  I have a DBAccessor  class I call thusly:

 DateTime dtStart = myDB.GetStartTime(myConn);
 DateTime dtEnd = myDB.GetStopTime(myConn);

Those calls are fed like this:
 internal DateTime GetStartTime(SqlConnection conn)
 {
     SqlCommand myCmd = new SqlCommand("Select StartTime from ServerStatus where ServerStatusId = 1", conn);
     DateTime StartTime = (DateTime)myCmd.ExecuteScalar();
     return StartTime;
}

When I get some time, I'm going to look at the class that ragi0017 linked to.  

0
 
channa_mCommented:
Try this and let me know if this works.

startDate and endDate can be any valid dates either pulled from database or textbox etc.,
    DateTime startDate = Convert.ToDateTime("5/15/2009 7:00:00 AM");
        DateTime endDate = Convert.ToDateTime("5/15/2009 4:00:00 PM");
 
        if (DateTime.Now > startDate && DateTime.Now < endDate)
        {
            Response.Write("Valid");
        }
        else
        {
            Response.Write("Invalid");
        }

Open in new window

0
 
Fernando SotoRetiredCommented:
Also place some

Console.WriteLine(dtStart.ToString());
Console.WriteLine(dtEnd.ToString());

Before the if statement to confirm that the dates are what you think they are.
0
 
DJGrayAuthor Commented:
Generally, I'm not a fan of the "link to" solutions, but in this case, the link is spot on.  It's exactly what I needed, and I'm surprised I couldn't find it with multiple Google searches.
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Tackle projects and never again get stuck behind a technical roadblock.
Join Now