色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c json 時間類型轉換

錢衛國2年前9瀏覽0評論

C 中使用 JSON 操作是非常常見的。在 JSON 中,我們通常會遇到時間類型,例如 "2018-07-16 15:36:24",而在 C 中,我們通常使用time_t類型來表示時間。因此,當我們需要從 JSON 中解析出一個時間字段時,我們需要將其轉換為time_t類型。

下面是一個使用jansson庫進行 JSON 解析的例子:

#include <jansson.h>
#include <time.h>
int main()
{
json_t *root;
json_error_t error;
const char *time_str;
time_t time_val;
root = json_loads("{\"time\":\"2018-07-16 15:36:24\"}", 0, &error);
if (!root) {
fprintf(stderr, "error: on line %d: %s\n", error.line, error.text);
return 1;
}
time_str = json_string_value(json_object_get(root, "time"));
struct tm t = {0};
sscanf(time_str, "%d-%d-%d %d:%d:%d", &t.tm_year, &t.tm_mon, &t.tm_mday,
&t.tm_hour, &t.tm_min, &t.tm_sec);
t.tm_year -= 1900;
t.tm_mon -= 1;
time_val = mktime(&t); // 轉換為 time_t
json_decref(root);
return 0;
}

在上面的例子中,我們首先加載了一個 JSON 字符串,解析出包含時間字段的 JSON 對象。然后,我們通過json_string_value函數獲取時間字符串,使用sscanf函數將其解析為一個tm結構體,最后使用mktime函數將其轉換為time_t類型的時間。

如果我們需要將一個time_t類型的時間轉換為 JSON 中的時間字符串,我們需要使用strftime函數。

char time_str[20];
time_t now;
time(&now); // 獲取當前時間
strftime(time_str, sizeof(time_str), "%Y-%m-%d %H:%M:%S", localtime(&now));
printf("%s\n", time_str); // 輸出當前時間

在上面的例子中,我們首先使用time函數獲取當前時間的time_t類型值,然后使用strftime函數將其轉換為字符串。其中,第一個參數是輸出字符串的地址,第二個參數是輸出字符串的大小,第三個參數是輸出的時間格式字符串。注意,輸出字符串的大小應該足夠大,以容納輸出的時間字符串。