From a11f7f86d29b07014ceb4ec6aaadb6445c5d04b7 Mon Sep 17 00:00:00 2001 From: Caisking <3449750381@qq.com> Date: Fri, 5 Jul 2024 15:30:22 +0800 Subject: [PATCH] =?utf8?q?=E4=BF=AE=E5=A4=8D=E6=AD=BB=E6=9C=BA=E6=96=87?= =?utf8?q?=E4=BB=B6=E5=86=85=E5=AD=98=E6=B3=84=E6=BC=8F=20=E5=A2=9E?= =?utf8?q?=E5=8A=A0=E5=AE=9A=E5=88=B6=E6=97=B6=E9=97=B4=E5=AD=97=E7=AC=A6?= =?utf8?q?=E4=B8=B2=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../nativeui/message/src/MessageModel.cpp | 4 +- .../nativeui/sleep/src/SleepModel.cpp | 5 +- .../drivers/peripheral/utils/custom_utils.c | 76 ++++++++++--------- .../drivers/peripheral/utils/custom_utils.h | 17 ++++- 4 files changed, 62 insertions(+), 40 deletions(-) diff --git a/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageModel.cpp index 7e8eff98f..a73fd48c0 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageModel.cpp @@ -31,7 +31,7 @@ #define MESSAGE_JSON_FILE "user/userdata/message/ancs.json" #define PRINTFDATA 1 -extern "C" errcode_t uapi_get_TIME_STR(uint32_t time, char *p_time, char separator, bool include_seconds, bool include_year); +extern "C" errcode_t uapi_get_TIME_STR(uint32_t time, char *p_time, char date_separator, char time_separator, date_format_t format); namespace OHOS { MessageData message_; @@ -120,7 +120,7 @@ namespace OHOS uint32 timestamp = cJSON_GetObjectItem(item, "time")->valueint; messagedata.timestamp = timestamp; char labelTime[20]; - if (uapi_get_TIME_STR(timestamp, labelTime, '.', false, false) != ERRCODE_SUCC) + if (uapi_get_TIME_STR(timestamp, labelTime, '.', ':', DATE_Y_M_D_H_M) != ERRCODE_SUCC) { messagedata.labelTime = std::string("2024.1.1 00:00"); } diff --git a/code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepModel.cpp index b768750c9..cbb9f5adc 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepModel.cpp @@ -27,8 +27,9 @@ #include "wearable_log.h" #include "ConfigModel.h" #include "heart_blood/health_service/health_service.h" +#include "custom_utils.h" -extern "C" errcode_t uapi_get_TIME_STR(uint32_t time, char *p_time, char separator, bool include_seconds, bool include_year); +extern "C" errcode_t uapi_get_TIME_STR(uint32_t time, char *p_time, char date_separator, char time_separator, date_format_t format); extern "C" int get_sleep_time_from_config_model(void); extern "C" int get_wake_up_time_from_config_model(); @@ -381,7 +382,7 @@ namespace OHOS void SleepModel::update_time_info(uint32_t timestamp, std::string &timeStr) { char labelTime[20]; - if (uapi_get_TIME_STR(timestamp, labelTime, '.', false, false) == ERRCODE_SUCC) + if (uapi_get_TIME_STR(timestamp, labelTime, '.', ':', DATE_Y_M_D_H_M) != ERRCODE_SUCC) { timeStr = std::string(labelTime); } diff --git a/code/sdk/drivers/peripheral/utils/custom_utils.c b/code/sdk/drivers/peripheral/utils/custom_utils.c index e6d8da72e..63edbb417 100644 --- a/code/sdk/drivers/peripheral/utils/custom_utils.c +++ b/code/sdk/drivers/peripheral/utils/custom_utils.c @@ -758,15 +758,17 @@ errcode_t uapi_get_yyyymmddhhmmss_Date(char *date) } return ERRCODE_SUCC; } + + /** * @param {uint32_t} time 时间戳 * @param {char} *p_time 字符串 - * @param {bool} include_seconds 是否包含秒 - * @param {bool} include_year 是否包含年份 - * * @param {char} 隔断符 + * @param {char} date_separator 日期分隔符 + * @param {char} time_separator 时间分隔符 + * @param {date_format_t} format 日期格式选项 * @brief 通过时间戳获取日期 */ -errcode_t uapi_get_TIME_STR(uint32_t time, char *p_time, char separator, bool include_seconds, bool include_year) +errcode_t uapi_get_TIME_STR(uint32_t time, char *p_time, char date_separator, char time_separator, date_format_t format) { if (p_time == NULL) { @@ -781,38 +783,38 @@ errcode_t uapi_get_TIME_STR(uint32_t time, char *p_time, char separator, bool in return ERRCODE_FAIL; } - // 根据需要格式化日期时间字符串,包括时分秒和分隔符 - if (include_seconds) + switch (format) { - if (include_year) - { - sprintf(p_time, "%04d%c%02d%c%02d %02d%c%02d", timeinfo->tm_year + 1900, separator, timeinfo->tm_mon + 1, separator, - timeinfo->tm_mday, timeinfo->tm_hour, separator, timeinfo->tm_min); - } - else - { - sprintf(p_time, "%02d%c%02d %02d%c%02d", timeinfo->tm_mon + 1, separator, - timeinfo->tm_mday, timeinfo->tm_hour, separator, timeinfo->tm_min); - } - } - else - { - if (include_year) - { - sprintf(p_time, "%04d%c%02d%c%02d %02d%c%02d", timeinfo->tm_year + 1900, separator, timeinfo->tm_mon + 1, separator, - timeinfo->tm_mday, timeinfo->tm_hour, separator, timeinfo->tm_min); - } - else - { - sprintf(p_time, "%02d%c%02d %02d%c%02d", timeinfo->tm_mon + 1, separator, - timeinfo->tm_mday, timeinfo->tm_hour, separator, timeinfo->tm_min); - } + case DATE_Y_M_D: + sprintf(p_time, "%04d%c%02d%c%02d", timeinfo->tm_year + 1900, date_separator, timeinfo->tm_mon + 1, date_separator, timeinfo->tm_mday); + break; + case DATE_Y_M_D_H_M: + sprintf(p_time, "%04d%c%02d%c%02d %02d%c%02d", timeinfo->tm_year + 1900, date_separator, timeinfo->tm_mon + 1, date_separator, + timeinfo->tm_mday, timeinfo->tm_hour, time_separator, timeinfo->tm_min); + break; + case DATE_M_D: + sprintf(p_time, "%02d%c%02d", timeinfo->tm_mon + 1, date_separator, timeinfo->tm_mday); + break; + case DATE_H_M_S: + sprintf(p_time, "%02d%c%02d%c%02d", timeinfo->tm_hour, time_separator, timeinfo->tm_min, time_separator, timeinfo->tm_sec); + break; + case DATE_H_M: + sprintf(p_time, "%02d%c%02d", timeinfo->tm_hour, time_separator, timeinfo->tm_min); + break; + case DATE_M_S: + sprintf(p_time, "%02d%c%02d", timeinfo->tm_min, time_separator, timeinfo->tm_sec); + break; + case DATE_M_D_H_M: + sprintf(p_time, "%02d%c%02d %02d%c%02d", timeinfo->tm_mon + 1, date_separator, timeinfo->tm_mday, timeinfo->tm_hour, time_separator, timeinfo->tm_min); + break; + default: + sprintf(p_time, "%04d%c%02d%c%02d %02d%c%02d%c%02d", timeinfo->tm_year + 1900, date_separator, timeinfo->tm_mon + 1, date_separator, + timeinfo->tm_mday, timeinfo->tm_hour, time_separator, timeinfo->tm_min, time_separator, timeinfo->tm_sec); + break; } return ERRCODE_SUCC; } - - /** * @param {char} *p_time * @param {char} 隔断符 @@ -1660,8 +1662,6 @@ int uapi_delete_files(const char *file_path) #define MAX_TAR_READ_BUF 1024 int uapi_tar_file(const char *src_path,const char *tar_path,char *tarfilename) { - //const char *tarfilePath = "%s/exc_%d.tar"; - DIR *dir; struct dirent *entry; mtar_t tar; size_t bytesRead = 0; @@ -1670,14 +1670,15 @@ int uapi_tar_file(const char *src_path,const char *tar_path,char *tarfilename) long tar_size = 0; int ret = 0; char *buffer = malloc(MAX_TAR_READ_BUF); - if (buffer == NULL) return -1; + if (buffer == NULL) + return -1; if(access(src_path, F_OK) == -1) { PRINT("%s does not exist!!!\r\n", src_path); return -1; } - dir = opendir(src_path); + DIR *dir = opendir(src_path); if (dir == NULL) { PRINT("unable to open %s\r\n",src_path); @@ -1689,6 +1690,7 @@ int uapi_tar_file(const char *src_path,const char *tar_path,char *tarfilename) ret = mkdir(tar_path, 0777); if(ret == -1) { + closedir(dir); PRINT("mkdir %s failed \r\n",tar_path); return -1; } @@ -1703,6 +1705,7 @@ int uapi_tar_file(const char *src_path,const char *tar_path,char *tarfilename) ret = mtar_open(&tar, str, "w"); if (ret != MTAR_ESUCCESS) { + closedir(dir); PRINT("unable to open/create %s\r\n",str); return -1; } @@ -1717,6 +1720,8 @@ int uapi_tar_file(const char *src_path,const char *tar_path,char *tarfilename) fp = fopen(filePath, "r"); if(fp == NULL) { + mtar_close(&tar); + closedir(dir); PRINT("uable to open %s\r\n", filePath); return -1; } @@ -1741,6 +1746,7 @@ int uapi_tar_file(const char *src_path,const char *tar_path,char *tarfilename) break; } } + fclose(fp); } } diff --git a/code/sdk/drivers/peripheral/utils/custom_utils.h b/code/sdk/drivers/peripheral/utils/custom_utils.h index 9fbd97a54..bef833a47 100644 --- a/code/sdk/drivers/peripheral/utils/custom_utils.h +++ b/code/sdk/drivers/peripheral/utils/custom_utils.h @@ -80,8 +80,23 @@ void print_current_time(void); errcode_t uapi_get_WeekStr(char *p_week); /*设置屏幕亮屏*/ void uapi_set_screen_on_api(void); + +/** + * @brief 日期格式选项枚举 + */ +typedef enum { + DATE_TIME_DEFULL, // 年 月 日 时:分:秒 + DATE_Y_M_D, // 年 月 日 + DATE_Y_M_D_H_M, // 年 月 日 时 分 + DATE_M_D, // 月 日 + DATE_H_M_S, // 时 分 秒 + DATE_H_M, // 时 分 + DATE_M_S, // 分 秒 + DATE_M_D_H_M // 月 日 时 分 +} date_format_t; + /*通过时间戳解析时间字符串*/ -errcode_t uapi_get_TIME_STR(uint32_t time, char *p_time, char separator, bool include_seconds, bool include_year); +errcode_t uapi_get_TIME_STR(uint32_t time, char *p_time, char date_separator, char time_separator, date_format_t format); char *uapi_get_local_yyyymmdd_date(void); -- 2.17.1