在C語言中操作json數據是很常見的,而json數據中的時間格式化輸出則是我們必須要處理的問題之一。在C語言中,我們可以使用time_t來表示時間,而結構體tm則可以將時間轉化為可讀的字符串形式。
下面是一個簡單的示例代碼,它將時間戳轉化為一個格式為"YYYY-MM-DD HH:MM:SS"的字符串:
#include <stdio.h> #include <time.h> #include <json-c/json.h> void format_time(char *buffer, size_t size, time_t time) { struct tm *tm; tm = localtime(&time); strftime(buffer, size, "%Y-%m-%d %H:%M:%S", tm); } int main() { char buffer[20]; time_t now = time(NULL); format_time(buffer, 20, now); printf("Current time: %s\n", buffer); return 0; }
該代碼通過調用localtime函數將time_t類型的時間戳轉換為一個tm結構體的指針,并使用strftime將該結構體轉換為一個可讀的字符串。其中strftime通過format參數來規定輸出格式,比如"%Y"表示四位數的年份,"%m"表示兩位數的月份,"%d"表示兩位數的日份,"%H"表示兩位數的小時,"%M"表示兩位數的分鐘,"%S"表示兩位數的秒。
如果你要將這個字符串形式的時間轉化為json格式,那么可以使用json_object_new_string函數來創建一個json字符串對象,并給該對象賦值為上面的時間字符串。代碼如下:
#include <stdio.h> #include <time.h> #include <json-c/json.h> void format_time(char *buffer, size_t size, time_t time) { struct tm *tm; tm = localtime(&time); strftime(buffer, size, "%Y-%m-%d %H:%M:%S", tm); } int main() { char buffer[20]; time_t now = time(NULL); json_object *jobj; format_time(buffer, 20, now); jobj = json_object_new_string(buffer); printf("JSON object: %s\n", json_object_to_json_string(jobj)); json_object_put(jobj); return 0; }
這樣就可以將時間戳轉化為json格式輸出啦。需要注意的是,在最后需要使用json_object_put函數來釋放json對象的內存。