システム日付を求めて、指定したフォーマットの文字列に変換するC言語の自作関数です。
void getSysdate(char *ret, char *format)
formatにはstrftime()で使えるものを指定できます。
#ifndef TIMEFUNC_H_ #define TIMEFUNC_H_ void getLocaltime(); extern void getSysdate(char *, char *); #endif /* TIMEFUNC_H_ */
#include <stdio.h> #include <string.h> #include <time.h> static struct tm *getLocaltime() { struct tm *t_st; time_t tt; /* 現在時刻取得 */ time(&tt); t_st = localtime(&tt); return t_st; } /** * @brief システム日付取得関数 * システム日付を指定されたフォーマットで返却する * strftimeのフォーマットを使用できる。 * * @param ret[O] 取得したシステム日付 * @param format[I] 返却値の書式フォーマット * @return なし * @author * @date */ void getSysdate(char *ret, char *format) { struct tm *t_st; char buf[64]; /* システム時刻の取得 */ t_st = getLocaltime(); /* 返却値を成形 */ strftime(buf, sizeof(buf), format, t_st); strcpy(ret, buf); }
#include <stdio.h> #include <stdlib.h> #include "timefunc.h" int main(int argc, char *argv[]) { char ymdhms[32]; getSysdate(ymdhms, "%Y年%m月%d日"); printf("%s\n", ymdhms); getSysdate(ymdhms, "%Y/%m/%d %H:%M:%S"); printf("%s\n", ymdhms); return 0; }
フォーマット後の返却するサイズを、制限しないようにしても良いのだけれど、
そんな長いフォーマットで日付を取ることは多分ない。
曜日を日本語で取るようにするのはまた今度。
コードの著作権は放棄します。
ごきげんよう