digitalmars.D.learn - How do I port date calculations from C code to D?
- Grzegorz Adam Hankiewicz (21/21) Jan 29 2006 I'm having trouble porting a simple C program to D. This program
- John C (3/24) Jan 29 2006 Import the std.c.time module.
- Walter Bright (3/6) Jan 29 2006 No. You can use the C functions directly that you're already using.
I'm having trouble porting a simple C program to D. This program
performs the task of a basic alarm system. At some point in the
program, the current time is converted into C's broken-down time
structure, the structure is modified, and finally converted back to
simple calendar time to find out how many seconds have to elapse from
"now" to the target time.
But I'm unable to find similar functions in Phobos. I have looked
in std.date, but that seems to implement only simple calendar time
functions. Do I have to write my own code?
Here is a sample of my C code:
current_time = time(NULL);
localtime_r(¤t_time, ¤t_time_tm);
// Set up the target time, using today's data.
final_time_tm = current_time_tm;
final_time_tm.tm_hour = some_specific_hour;
final_time_tm.tm_min = some_specific_minute;
final_time_tm.tm_sec = 0;
// Check if the final time is "lower" than now, to increment it.
if(timelocal(&final_time_tm) - current_time < 1)
final_time_tm.tm_mday += 1;
seconds_to_go = timelocal(&final_time_tm) - current_time;
Jan 29 2006
"Grzegorz Adam Hankiewicz" <fake dont.use> wrote in message
news:pan.2006.01.29.12.29.01.350512 dont.use...
I'm having trouble porting a simple C program to D. This program
performs the task of a basic alarm system. At some point in the
program, the current time is converted into C's broken-down time
structure, the structure is modified, and finally converted back to
simple calendar time to find out how many seconds have to elapse from
"now" to the target time.
But I'm unable to find similar functions in Phobos. I have looked
in std.date, but that seems to implement only simple calendar time
functions. Do I have to write my own code?
Here is a sample of my C code:
current_time = time(NULL);
localtime_r(¤t_time, ¤t_time_tm);
// Set up the target time, using today's data.
final_time_tm = current_time_tm;
final_time_tm.tm_hour = some_specific_hour;
final_time_tm.tm_min = some_specific_minute;
final_time_tm.tm_sec = 0;
// Check if the final time is "lower" than now, to increment it.
if(timelocal(&final_time_tm) - current_time < 1)
final_time_tm.tm_mday += 1;
seconds_to_go = timelocal(&final_time_tm) - current_time;
Import the std.c.time module.
Jan 29 2006
"Grzegorz Adam Hankiewicz" <fake dont.use> wrote in message news:pan.2006.01.29.12.29.01.350512 dont.use...But I'm unable to find similar functions in Phobos. I have looked in std.date, but that seems to implement only simple calendar time functions. Do I have to write my own code?No. You can use the C functions directly that you're already using.
Jan 29 2006









"John C" <johnch_atms hotmail.com> 