Solved

SIMPLE: time variable?

Posted on 2002-04-18
5
259 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
[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
  • 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

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!

Question has a verified solution.

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

Suggested Solutions

When writing generic code, using template meta-programming techniques, it is sometimes useful to know if a type is convertible to another type. A good example of when this might be is if you are writing diagnostic instrumentation for code to generat…
In days of old, returning something by value from a function in C++ was necessarily avoided because it would, invariably, involve one or even two copies of the object being created and potentially costly calls to a copy-constructor and destructor. A…
The goal of the tutorial is to teach the user how to use functions in C++. The video will cover how to define functions, how to call functions and how to create functions prototypes. Microsoft Visual C++ 2010 Express will be used as a text editor an…
The goal of the video will be to teach the user the concept of local variables and scope. An example of a locally defined variable will be given as well as an explanation of what scope is in C++. The local variable and concept of scope will be relat…

734 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