mirror of
https://github.com/zlgopen/awtk.git
synced 2025-05-09 03:51:08 +08:00
improve date time
This commit is contained in:
parent
6181816d65
commit
c27e55a504
@ -1,5 +1,10 @@
|
||||
# 最新动态
|
||||
|
||||
2023/06/26
|
||||
* 完善date\_time\_to\_time/date\_time\_from\_time:
|
||||
* 类型由uint64改为int64。
|
||||
* 本地时间改为GMT时间。
|
||||
|
||||
2023/06/22
|
||||
* 增加函数ret\_code\_from\_name/ret\_code\_to\_name。
|
||||
|
||||
|
@ -132,9 +132,9 @@ static ret_t date_time_set_now_impl(date_time_t* dt) {
|
||||
|
||||
#endif
|
||||
|
||||
static ret_t date_time_from_time_impl(date_time_t* dt, uint64_t timeval) {
|
||||
static ret_t date_time_from_time_impl(date_time_t* dt, int64_t timeval) {
|
||||
time_t tm = timeval;
|
||||
struct tm* t = localtime(&tm);
|
||||
struct tm* t = gmtime(&tm);
|
||||
return_value_if_fail(dt != NULL, RET_BAD_PARAMS);
|
||||
|
||||
memset(dt, 0x00, sizeof(date_time_t));
|
||||
@ -150,20 +150,23 @@ static ret_t date_time_from_time_impl(date_time_t* dt, uint64_t timeval) {
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
static uint64_t date_time_to_time_impl(date_time_t* dt) {
|
||||
time_t tm = 0;
|
||||
struct tm* t = localtime(&tm);
|
||||
static int64_t date_time_to_time_impl(date_time_t* dt) {
|
||||
struct tm t;
|
||||
time_t tvalue = 0;
|
||||
return_value_if_fail(dt != NULL, RET_BAD_PARAMS);
|
||||
|
||||
t->tm_sec = dt->second;
|
||||
t->tm_min = dt->minute;
|
||||
t->tm_hour = dt->hour;
|
||||
t->tm_mday = dt->day;
|
||||
t->tm_mon = dt->month - 1;
|
||||
t->tm_year = dt->year - 1900;
|
||||
t->tm_wday = dt->wday;
|
||||
memset(&t, 0x00, sizeof(t));
|
||||
t.tm_sec = dt->second;
|
||||
t.tm_min = dt->minute;
|
||||
t.tm_hour = dt->hour;
|
||||
t.tm_mday = dt->day;
|
||||
t.tm_mon = dt->month - 1;
|
||||
t.tm_year = dt->year - 1900;
|
||||
t.tm_wday = dt->wday;
|
||||
|
||||
return (uint64_t)mktime(t);
|
||||
tvalue = timegm(&t);
|
||||
|
||||
return tvalue;
|
||||
}
|
||||
|
||||
uint64_t stm_now_ms();
|
||||
|
@ -57,7 +57,7 @@ date_time_t* date_time_create(void) {
|
||||
return date_time_init(dt);
|
||||
}
|
||||
|
||||
ret_t date_time_from_time(date_time_t* dt, uint64_t time) {
|
||||
ret_t date_time_from_time(date_time_t* dt, int64_t time) {
|
||||
return_value_if_fail(dt != NULL, RET_BAD_PARAMS);
|
||||
return_value_if_fail(s_date_time_from_time != NULL, RET_BAD_PARAMS);
|
||||
|
||||
@ -154,14 +154,14 @@ const char* date_time_get_wday_name(uint32_t wday) {
|
||||
}
|
||||
|
||||
ret_t date_time_add_delta(date_time_t* dt, int64_t delta) {
|
||||
uint64_t t = 0;
|
||||
int64_t t = 0;
|
||||
return_value_if_fail(dt != NULL && s_date_time_to_time != NULL, RET_BAD_PARAMS);
|
||||
t = s_date_time_to_time(dt) + delta;
|
||||
|
||||
return s_date_time_from_time(dt, t);
|
||||
}
|
||||
|
||||
uint64_t date_time_to_time(date_time_t* dt) {
|
||||
int64_t date_time_to_time(date_time_t* dt) {
|
||||
return_value_if_fail(dt != NULL && s_date_time_to_time != NULL, RET_BAD_PARAMS);
|
||||
|
||||
return s_date_time_to_time(dt);
|
||||
|
@ -182,26 +182,26 @@ ret_t date_time_set(date_time_t* dt);
|
||||
|
||||
/**
|
||||
* @method date_time_from_time
|
||||
* 从time转换而来。
|
||||
* 从time转换而来(按GMT转换)。
|
||||
*
|
||||
* @annotation ["scriptable"]
|
||||
* @param {date_time_t*} dt date_time对象。
|
||||
* @param {uint64_t} time 时间。
|
||||
* @param {int64_t} time 时间。
|
||||
*
|
||||
* @return {ret_t} 返回RET_OK表示成功,否则表示失败。
|
||||
*/
|
||||
ret_t date_time_from_time(date_time_t* dt, uint64_t time);
|
||||
ret_t date_time_from_time(date_time_t* dt, int64_t time);
|
||||
|
||||
/**
|
||||
* @method date_time_to_time
|
||||
* 转换成time。
|
||||
* 转换成time(按GMT转换)。
|
||||
*
|
||||
* @annotation ["scriptable"]
|
||||
* @param {date_time_t*} dt date_time对象。
|
||||
*
|
||||
* @return {uint64_t} 返回time。
|
||||
* @return {int64_t} 返回time。
|
||||
*/
|
||||
uint64_t date_time_to_time(date_time_t* dt);
|
||||
int64_t date_time_to_time(date_time_t* dt);
|
||||
|
||||
/**
|
||||
* @method date_time_add_delta
|
||||
|
@ -9,6 +9,19 @@ TEST(DateTime, convert) {
|
||||
ASSERT_EQ(date_time_from_time(dt, now), RET_OK);
|
||||
ASSERT_EQ(date_time_to_time(dt), now);
|
||||
|
||||
|
||||
memset(dt, 0x00, sizeof(*dt));
|
||||
dt->year = 1970;
|
||||
dt->month = 1;
|
||||
dt->day = 1;
|
||||
|
||||
ASSERT_EQ(date_time_to_time(dt), 0);
|
||||
|
||||
ASSERT_EQ(date_time_from_time(dt, 0), RET_OK);
|
||||
ASSERT_EQ(dt->year, 1970);
|
||||
ASSERT_EQ(dt->month, 1);
|
||||
ASSERT_EQ(dt->day, 1);
|
||||
|
||||
date_time_destroy(dt);
|
||||
}
|
||||
|
||||
@ -95,15 +108,16 @@ TEST(DateTime, wday) {
|
||||
}
|
||||
|
||||
TEST(DateTime, from_time) {
|
||||
date_time_t dt;
|
||||
date_time_t now;
|
||||
time_t t = time(0);
|
||||
date_time_init(&now);
|
||||
ASSERT_EQ(date_time_from_time(&dt, t), RET_OK);
|
||||
ASSERT_EQ(dt.year, now.year);
|
||||
ASSERT_EQ(dt.month, now.month);
|
||||
ASSERT_EQ(dt.day, now.day);
|
||||
ASSERT_EQ(dt.hour, now.hour);
|
||||
date_time_t* dt = date_time_create();
|
||||
|
||||
ASSERT_EQ(date_time_from_time(dt, 86400), RET_OK);
|
||||
ASSERT_EQ(dt->year, 1970);
|
||||
ASSERT_EQ(dt->month, 1);
|
||||
ASSERT_EQ(dt->day, 2);
|
||||
|
||||
ASSERT_EQ(date_time_to_time(dt), 86400);
|
||||
|
||||
date_time_destroy(dt);
|
||||
}
|
||||
|
||||
TEST(DateTime, set_time) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user