c 是一門經典的編程語言,廣泛應用于各種類型的軟件開發中。而 json 是一種輕量級的數據交換格式,常用于網絡通信和數據存儲。在 c 中使用 json 能夠輕松地處理復雜的數據結構,同時也可以將 json 轉換為 c 中的變量類型。
獲取 json 中的時間格式是 c 中處理 json 的常見需求之一。在 json 中表示時間的格式是字符串,通常采用 ISO 8601 標準。如 "2022-06-30T03:42:12.013Z" 表示時間為 2022 年 6 月 30 日 3 點 42 分 12 秒 13 毫秒,時區為 UTC。
// 示例代碼 #include <stdio.h> #include <string.h> #include <json-c/json.h> int main() { const char *json_str = "{ \"time\": \"2022-06-30T03:42:12.013Z\" }"; struct json_object *jobj = json_tokener_parse(json_str); struct json_object *jtime = NULL; if (json_object_object_get_ex(jobj, "time", &jtime)) { const char *time_str = json_object_get_string(jtime); // 轉換為 struct tm 類型 struct tm tm_time; memset(&tm_time, 0x00, sizeof(struct tm)); strptime(time_str, "%Y-%m-%dT%H:%M:%S", &tm_time); printf("time: %d-%02d-%02d %02d:%02d:%02d\n", tm_time.tm_year + 1900, tm_time.tm_mon + 1, tm_time.tm_mday, tm_time.tm_hour, tm_time.tm_min, tm_time.tm_sec); } json_object_put(jobj); return 0; }
上述示例代碼演示了如何從 json 字符串中獲取時間字符串,并將其轉換為 c 中的 struct tm 類型。具體步驟如下:
- 使用 json_tokener_parse 函數將 json 字符串解析成 json_object 對象。
- 使用 json_object_object_get_ex 函數從 json_object 對象中獲取指定字段的值。
- 使用 strptime 函數將時間字符串轉換為 struct tm 對象。
在進行時間字符串的解析和轉換時,需要注意時間字符串的時區信息。以上代碼中的時間字符串采用的是 UTC 時區,如有需要應根據實際情況進行調整。