ISO-8601形式の日付/時刻文字列から に変換する方法を知っている人はいtime_t
ますか? 私は C++ を使用しており、Windows と Mac で動作する必要があります。
私はコードを書きましたが、より「標準的」なバージョンがあると確信しています。
私は次のような日付を取得し、2011-03-21 20:25
その時間が過去か未来かを判断する必要があります。
私が面白いと思った 1 つの醜いハック: どちらの日付/時刻が大きいかだけを判断したいので、日付を文字列に変換して文字列を比較できます。;-) (利点は、どこでも利用できるわけではない strptime が必要ないことです。)
#include <string.h>
#include <time.h>
int main(int argc, char *argv[])
{
const char *str = "2011-03-21 20:25";
char nowbuf[100];
time_t now = time(0);
struct tm *nowtm;
nowtm = localtime(&now);
strftime(nowbuf, sizeof(nowbuf), "%Y-%m-%d %H:%M", nowtm);
if (strncmp(str, nowbuf, strlen(str)) >= 0) puts("future"); else puts("past");
return 0;
}
を使用strptime
して文字列から に変換した後、 を使用して からに変換struct tm
できます。例えば:mktime
struct tm
time_t
// Error checking omitted for expository purposes
const char *timestr = "2011-03-21 20:25";
struct tm t;
strptime(timestr, "%Y-%m-%d %H:%M", &t);
time_t t2 = mktime(&t);
// Now compare t2 with time(NULL) etc.