私の最初の時間は12:10:20 PMで、2回目の時間は7:10:20 AMです。どのようにしてdiff b/wを見つけることができますか?どのようにCで2回の違いを見つけるには?
私の考えは、時間
に変換秒にすべての時間を変換して、もう一度違いを見つけることですが、それは他のApproch R何でも良いですが?
私の最初の時間は12:10:20 PMで、2回目の時間は7:10:20 AMです。どのようにしてdiff b/wを見つけることができますか?どのようにCで2回の違いを見つけるには?
私の考えは、時間
に変換秒にすべての時間を変換して、もう一度違いを見つけることですが、それは他のApproch R何でも良いですが?
ない最善の方法をしますが、システム上で利用できるものを使用したい場合は、difftime()とはmktime:機能の次のグループは、これらすべての変換のお手伝いをすることができます()が助けることができます -
#include <time.h>
tm Time1 = { 0 }; // Make sure everything is initialized to start with.
/* 12:10:20 */
Time1.tm_hour = 12;
Time1.tm_min = 10;
Time1.tm_sec = 20;
/* Give the function a sane date to work with (01/01/2000, here). */
Time1.tm_mday = 1;
Time1.tm_mon = 0;
Time1.tm_year = 100;
tm Time2 = Time1; // Base Time2 on Time1, to get the same date...
/* 07:10:20 */
Time2.tm_hour = 7;
Time2.tm_min = 10;
Time2.tm_sec = 20;
/* Convert to time_t. */
time_t TimeT1 = mktime(&Time1);
time_t TimeT2 = mktime(&Time2);
/* Use difftime() to find the difference, in seconds. */
double Diff = difftime(TimeT1, TimeT2);
情報役立つ – Cute
@ jons34yp:CとC++でバイリンガルであった回答を、CとC++でタグ付けされた質問の回答として変換しましたが、もはやCで有効な回答にはなりませんでした.C++ 11バージョンのコードを答えに入れる(必ずしも悪いことではありませんが、別の答えを編集するのではなく、自分で質問に答えることができます)、バイリンガルなコードをそのまま残してください)。 –
@ JonathanLeffler私は、Cのソリューションは常にC++で使用できるので、[C++]に加えて[c]という質問にタグを付けると推測しました。 –
difftime
機能が必要です。
編集
あなたが利用可能difftime
を持っていない場合、私は、あなたがエポックからの秒にしているだけでどんな形式から変換示唆あなたの計算を行うと、バック何が必要なフォーマットにひそかでしょう。必ずしも
timegm, timelocal - inverses for gmtime and localtime (may not be available on all systems)
これはC99のみのことです。 – paxdiablo
C99がどれくらい幅広くサポートされているのか分かりませんか? 10年後にはほとんどのシステムでほとんどサポートされていたと思うでしょう(自分の考えを考えていますか?) –
'difftime()'と 'mktime()'は、 C89の一部。 '* _r()'関数はより新しいものですが、POSIX標準です。 'timegm()'と 'timelocal()'関数ははるかに制限されています(BSD、Linux?)。 –
あなたのアプローチは合理的です。
これをもう一度実行すると、Unix timeなどの普遍的な時間形式に変換し、その違いを利用することができます。
2つの時間値をどのように格納するかを示すコードを投稿できますか?12:10:20 PMと7:10:20 AM?たとえば、彼らは同じ日ですか?別の日ですか?の共通関数を使用して簡単に変換できる値であるかどうかは不明です。それらが変換可能な場合は、エポック時間の差を計算し、それをより読みやすい時刻に変換することができます。 –