Solved

# SIMPLE: time variable?

Posted on 2002-04-18
231 Views
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
Question by:llllllllll
• 3
• 2

LVL 1

Expert Comment

Hi,

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

ok how would i set that to a specific time (instead of current time)
0

LVL 1

Expert Comment

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

can i do that on 12 hour time?
0

LVL 1

Accepted Solution

lsmgms earned 100 total points
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

Errors will happen. It is a fact of life for the programmer. How and when errors are detected have a great impact on quality and cost of a product. It is better to detect errors at compile time, when possible and practical. Errors that make their wa…
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 additional member functions of the vector class. Specifically, the capacity and swap member functions will be introduced.
The viewer will be introduced to the technique of using vectors in C++. The video will cover how to define a vector, store values in the vector and retrieve data from the values stored in the vector.