Solved

SIMPLE: time variable?

Posted on 2002-04-18
5
236 Views
Last Modified: 2010-04-02
is there a variable or structure that I could use to hold a simulated time? I'm working on a simulation program and I need to handle time. I'm looking for a way to increment the time in minutes and have it roll over to hours.

So if i incremented a time variable by 30 minutes 3 times. It could from 12:00 to 1:30. Can someone tell me how to do this thanks.
0
Comment
Question by:llllllllll
  • 3
  • 2
5 Comments
 
LVL 1

Expert Comment

by:lsmgms
ID: 6952659
Hi,

How about this:
  struct tm
  time_t mktime( struct tm *timeptr );



Example quoted from MSDN:

/* MKTIME.C: The example takes a number of days
 * as input and returns the time, the current
 * date, and the specified number of days.
 */

#include <time.h>
#include <stdio.h>

void main( void )
{
   struct tm when;
   time_t now, result;
   int    days;

   time( &now );
   when = *localtime( &now );
   printf( "Current time is %s\n", asctime( &when ) );
   printf( "How many days to look ahead: " );
   scanf( "%d", &days );

   when.tm_mday = when.tm_mday + days;
   if( (result = mktime( &when )) != (time_t)-1 )
      printf( "In %d days the time will be %s\n",
              days, asctime( &when ) );
   else
      perror( "mktime failed" );
}


Output

Current time is Tue May 03 12:45:47 1994

How many days to look ahead: 29
In 29 days the time will be Wed Jun 01 12:45:47 1994


Hope this will help.
0
 

Author Comment

by:llllllllll
ID: 6952676
ok how would i set that to a specific time (instead of current time)
0
 
LVL 1

Expert Comment

by:lsmgms
ID: 6952718
Using your example:
So if i incremented a time variable by 30 minutes 3 times. It could from 12:00 to 1:30.

#include <time.h>
#include <stdio.h>
void main(void)
{
  struct tm when;
  time_t now, result;

     /* simply initialize to localtime */
  time( &now );
  when = *localtime( &now );

     /* set your time now, assume you do not need day info */
     when.tm_hour = 12;
     when.tm_min = 0;
     when.tm_sec = 0;
     
     printf("Org time %02d:%02d;%02d\n", when.tm_hour, when.tm_min, when.tm_sec);

     /* add 30 * 3 min */
     when.tm_min = 90;
  if( (result = mktime( &when )) != (time_t)-1 )
          printf("New time %02d:%02d;%02d\n", when.tm_hour, when.tm_min, when.tm_sec);

     /* output */
     /*
          Org time 12:00;00
          New time 13:30;00
     */


}



0
 

Author Comment

by:llllllllll
ID: 6952749
can i do that on 12 hour time?
0
 
LVL 1

Accepted Solution

by:
lsmgms earned 100 total points
ID: 6952760
There is not different for the data stored in the structure.  It is how you present your data.  Example, bu changing the code from:
if( (result = mktime( &when )) != (time_t)-1 )
         printf("New time %02d:%02d;%02d\n", when.tm_hour, when.tm_min, when.tm_sec);


to
  if( (result = mktime( &when )) != (time_t)-1 )
          printf("New time %02d:%02d:%02d %s\n",
          (when.tm_hour>12 ? when.tm_hour-12: when.tm_hour),
          when.tm_min,
          when.tm_sec,
          (when.tm_hour>12 ? "pm": "am"));

-->New time 01:30:00 pm

You will get your "12 hour time"


0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

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

Article by: SunnyDark
This article's goal is to present you with an easy to use XML wrapper for C++ and also present some interesting techniques that you might use with MS C++. The reason I built this class is to ease the pain of using XML files with C++, since there is…
Introduction This article is a continuation of the C/C++ Visual Studio Express debugger series. Part 1 provided a quick start guide in using the debugger. Part 2 focused on additional topics in breakpoints. As your assignments become a little more …
The viewer will learn how to user default arguments when defining functions. This method of defining functions will be contrasted with the non-default-argument of defining functions.
The viewer will learn how to clear a vector as well as how to detect empty vectors in C++.

948 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

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now