ログや設定ファイルで日付が数値になってるのがあったりするので日付文字列数値変換プログラムを作ってみた。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
#define _XOPEN_SOURCE #include <time.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main(int argc, char **argv) { time_t t; struct tm tm; char *s, *e; if (argc <= 1) printf("%zd\n", (ssize_t)time(NULL)); else { s = argv[1]; t = strtoul(s, &e, 10); if (*e) { strptime(s, "%Y-%m-%d %H:%M:%S", &tm); printf("%zd\n", (ssize_t)mktime(&tm)); } else { tm = *localtime(&t); printf("%04d-%02d-%02d %02d:%02d:%02d\n", tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec); } } return 0; } |
現在時刻をtime_t型へ変換
./tconv
1670252400
日付文字列をtime_t型へ変換
./tconv “2022-12-06 00:00:00”
1670252400
time_t型を日付文字列へ変換
./tconv 1670252400
2022-12-06 00:00:00
PS.
こんなの作らなくてもdateコマンドで同じことができるみたい。(-_-;)