私は、気象ソフトウェアパッケージで使用される適切なファイルのセットをダウンロードするための小さなプログラムをプログラミングしています。ファイルは、UTCのYYYYMMDD
やYYYYMMDD HHMM
のような形式です。 UTCでの現在の時刻をC++で知りたいのですが、Ubuntuを使用しています。これを行う簡単な方法はありますか?
C++のハイエンドの答えは、BoostDate_Timeを使用することです。
しかし、それはやり過ぎかもしれません。 Cライブラリにはstrftime
に必要なものがあり、マニュアルページに例があります。
/* from man 3 strftime */
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
char outstr[200];
time_t t;
struct tm *tmp;
const char* fmt = "%a, %d %b %y %T %z";
t = time(NULL);
tmp = gmtime(&t);
if (tmp == NULL) {
perror("gmtime error");
exit(EXIT_FAILURE);
}
if (strftime(outstr, sizeof(outstr), fmt, tmp) == 0) {
fprintf(stderr, "strftime returned 0");
exit(EXIT_FAILURE);
}
printf("%s\n", outstr);
exit(EXIT_SUCCESS);
}
マニュアルページの内容に基づいて完全な例を追加しました。
$ gcc -o strftime strftime.c
$ ./strftime
Mon, 16 Dec 13 19:54:28 +0000
$
Gmtimeを使用できます。
struct tm * gmtime (const time_t * timer);
Convert time_t to tm as UTC time
次に例を示します。
std::string now()
{
std::time_t now= std::time(0);
std::tm* now_tm= std::gmtime(&now);
char buf[42];
std::strftime(buf, 42, "%Y%m%d %X", now_tm);
return buf;
}
ideoneリンク: http://ideone.com/pCKG9K