-
Notifications
You must be signed in to change notification settings - Fork 0
/
dl_time.c
82 lines (60 loc) · 1.24 KB
/
dl_time.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include "dl_base.h"
/*
waited to be optimized with setitimer and cache the time,
do not update time within 1 second.
*/
int dl_event_timer_alarm = 1;
static __thread char dl_time_buf[64];
static __thread ulong msec;
static __thread ulong sec;
static void dl_update_time()
{
struct tm *tm1;
struct timeval tv;
gettimeofday(&tv, NULL);
sec = tv.tv_sec;
msec = tv.tv_sec*1000 + tv.tv_usec/1000;
tm1 = localtime(&sec);
strftime(dl_time_buf, 64, "%Y-%m-%d %H:%M:%S", tm1);
}
ulong dl_get_time_ms()
{
struct timeval tv;
if(dl_event_timer_alarm == 1){
dl_update_time();
dl_event_timer_alarm = 0;
}
return msec;
}
ulong dl_get_time_s()
{
if(dl_event_timer_alarm == 1){
dl_update_time();
dl_event_timer_alarm = 0;
}
return sec;
}
char *dl_get_datetime()
{
if(dl_event_timer_alarm == 1){
dl_update_time();
dl_event_timer_alarm = 0;
}
return dl_time_buf;
}
/* force update time */
ulong dl_get_time_ms_f()
{
dl_update_time();
return msec;
}
ulong dl_get_time_s_f()
{
dl_update_time();
return sec;
}
char *dl_get_datetime_f()
{
dl_update_time();
return dl_time_buf;
}