まず、 difftime を使用して比較します。
関数を使用difftime()
して、時間と戻り値を比較する1
か -1
、次のようにします。
int comparetime(time_t time1,time_t time2){
return difftime(time1,time2) > 0.0 ? 1 : -1;
}
SECOND- 文字列を時間に変換:
構造体への変換 が難しい場合は、次の 2 つの関数string
を time_t
続けて使用できます。
char *strptime(const char *buf, const char *format, struct tm *tm);
関数。文字列をに変換するstruct tm
例: 日時文字列を変換する"Mar 21 11:51:20 AM"
には、次のstruct tm
3 つの書式文字列が必要です。
%b : 月の名前。完全な名前または省略形のいずれかです。
%d : 月の日 [1–31]。
%r : ロケールの AM/PM 形式の時刻。ロケールの時間形式で利用できない場合は、デフォルトで POSIX 時間の AM/PM 形式: %I:%M:%S %p
.
time_t mktime (struct tm * timeptr);
に変換するstruct tm*
関数time_t
以下は私のサンプルプログラムです:
#include <stdio.h>
#include <time.h>
int main(void){
time_t t1, t2;
struct tm *timeptr,tm1, tm2;
char* time1 = "Mar 21 11:51:20 AM";
char* time2 = "Mar 21 10:20:05 AM";
//(1) convert `String to tm`:
if(strptime(time1, "%b %d %r",&tm1) == NULL)
printf("\nstrptime failed\n");
if(strptime(time2, "%b %d %r",&tm2) == NULL)
printf("\nstrptime failed\n");
//(2) convert `tm to time_t`:
t1 = mktime(&tm1);
t2 = mktime(&tm2);
printf("\n t1 > t2 : %d", comparetime(t1, t2));
printf("\n t2 > t1 : %d", comparetime(t2, t1));
printf("\n");
return 1;
}
そして、それはあなたが望むように機能します:
$ ./a.out
t1 > t2 : 1
t2 > t1 : -1
読み取った 2 つの日付の差を計算するには: C で時間単位の 2 つの日付の差をどのように見つけますか?