関連記事
GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ
概要
以下、自分用のメモです。
Goのとても有用なドキュメントやライブラリを公開してくださっている nalgeon さんが vaqtというC言語のライブラリを公開していました。
使い勝手が Go の timeパッケージ に似た構成となっているので、Goを知っている人はとても使いやすいライブラリI/Fとなっています。
使い方に関しては、リポジトリのREADME.mdやexampleディレクトリの下にあるので、使い方で迷うことはありませんが、一応自分で触ってみたメモを以下に残しておきます。
準備
C言語のライブラリなので、ソースごと持ってきます。
$ mkdir app $ cd app $ git clone --depth=1 https://github.com/nalgeon/vaqt.git $ touch main.c $ touch Makefile
サンプル
main.c
#include <stdbool.h> #include <stdint.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include "vaqt.h" int main(void) { char buf[64] = {0}; size_t buf_size = sizeof(buf); Time now = time_now(); // 現在時刻 // 日時表示 { memset(buf, 0, buf_size); time_fmt_datetime(now, 0, buf, buf_size); printf("time_fmt_datetime: %s\n", buf); memset(buf, 0, buf_size); int32_t offsets = (60 * 60 * 8); time_fmt_datetime(now, offsets, buf, buf_size); printf("time_fmt_datetime (with offsets): %s\n", buf); } // ISOフォーマット { memset(buf, 0, buf_size); time_fmt_iso(now, 0, buf, buf_size); printf("time_fmt_iso: %s\n", buf); } // UNIX秒 { int64_t unix_sec = time_to_unix(now); printf("time_to_unix: %ld\n", unix_sec); } // 時間加算 Time after_10secs; { after_10secs = time_add(now, (10 * TIME_SECOND)); memset(buf, 0, buf_size); time_fmt_datetime(after_10secs, 0, buf, buf_size); printf("time_add: %s\n", buf); } // 特定の時刻より後かチェック { bool ok = time_after(after_10secs, now); printf("time_after(after_10secs, now): %s\n", ok ? "TRUE" : "FALSE"); } return EXIT_SUCCESS; }
Makefile
PROGRAM := app
CC := gcc
CFLAGS := -g3 -Wall -Wextra -std=c99
INCDIRS := -Ivaqt/src
.PHONY: run
run:
$(RM) $(PROGRAM)
$(CC) $(INCDIRS) -c vaqt/src/*.c
$(CC) $(CFLAGS) $(INCDIRS) -c main.c
$(CC) $(CFLAGS) *.o -o $(PROGRAM)
./$(PROGRAM)
実行
$ make rm -f app gcc -Ivaqt/src -c vaqt/src/*.c gcc -g3 -Wall -Wextra -std=c99 -Ivaqt/src -c main.c gcc -g3 -Wall -Wextra -std=c99 *.o -o app ./app time_fmt_datetime: 2025-10-19 11:07:55 time_fmt_datetime (with offsets): 2025-10-19 19:07:55 time_fmt_iso: 2025-10-19T11:07:55.544821143Z time_to_unix: 1760872075 time_add: 2025-10-19 11:08:05 time_after(after_10secs, now): TRUE
参考情報
過去の記事については、以下のページからご参照下さい。
サンプルコードは、以下の場所で公開しています。