システム日付を求めて、指定したフォーマットの文字列に変換する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;
}
フォーマット後の返却するサイズを、制限しないようにしても良いのだけれど、
そんな長いフォーマットで日付を取ることは多分ない。
曜日を日本語で取るようにするのはまた今度。
コードの著作権は放棄します。
ごきげんよう

