ちょっと生きづらさを抱えた人へ、気持ちを楽にするためのお手紙です。

システム日付を求める 1【C言語】

システム日付を求めて、指定したフォーマットの文字列に変換する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;
}

 

フォーマット後の返却するサイズを、制限しないようにしても良いのだけれど、

そんな長いフォーマットで日付を取ることは多分ない。

 

曜日を日本語で取るようにするのはまた今度。

 

コードの著作権は放棄します。

ごきげんよう

コメントを残す

メールアドレスが公開されることはありません。