C語言是一門廣泛應用于系統級編程和嵌入式開發的語言,JSON是一種輕量級的數據交換格式。在C語言中,我們需要處理JSON數據時,往往需要對JSON中的日期/時間進行操作,因此我們需要了解如何在C語言中處理JSON中的時間數據。
#include <stdio.h> #include <time.h> #include <jansson.h> int main() { char *json_string = "{\"time\": \"2022-12-31 23:59:59\"}"; json_t *root; json_error_t error; root = json_loads(json_string, 0, &error); if (!root) { fprintf(stderr, "error: on line %d: %s\n", error.line, error.text); return 1; } json_t *time_obj = json_object_get(root, "time"); char *time_str = json_string_value(time_obj); struct tm time_struct = { 0 }; strptime(time_str, "%Y-%m-%d %H:%M:%S", &time_struct); time_t t = mktime(&time_struct); printf("time in seconds: %ld\n", (long)t); printf("asctime: %s", asctime(&time_struct)); json_decref(root); return 0; }
上述代碼演示了如何從JSON中獲取日期時間字符串,并將其轉換為time_t類型或struct tm類型。在此例中,我們使用了strptime來將時間字符串解析為struct tm類型,然后使用mktime函數將其轉換為time_t類型,以便于我們在程序中進行時間操作和比較。
要注意的是,使用strptime函數所需的格式字符串并不是一目了然的,因此需要仔細檢查和測試以確保正確處理輸入時間字符串。在實際應用中,我們可以將格式字符串進行封裝,以便在代碼中重復使用。