C言語関係掲示板

過去ログ

No.1263 秒数を+1秒する方法

[戻る] [ホームページ]
No.16660

秒数を+1秒する方法 
投稿者---プッチー(2004/09/08 11:34:13)


こんにちは。
C++にて、2004/09/07 11:12:59にプラス1秒して
2004/09/07 11:13:00というような感じで変換したいのですが、
なかなかいい方法が見つかりません。どなたか、簡単に実現できる
コーディング例とかご存じでしたら、教えてください。



No.16661

Re:秒数を+1秒する方法 
投稿者---シャノン(2004/09/08 11:45:24)


>こんにちは。
>C++にて、2004/09/07 11:12:59にプラス1秒して
>2004/09/07 11:13:00というような感じで変換したいのですが、
>なかなかいい方法が見つかりません。どなたか、簡単に実現できる
>コーディング例とかご存じでしたら、教えてください。

mktime とか。



No.16663

Re:秒数を+1秒する方法 
投稿者---プッチー(2004/09/08 12:05:54)


>>こんにちは。
>>C++にて、2004/09/07 11:12:59にプラス1秒して
>>2004/09/07 11:13:00というような感じで変換したいのですが、
>>なかなかいい方法が見つかりません。どなたか、簡単に実現できる
>>コーディング例とかご存じでしたら、教えてください。
>
>mktime とか。

どうもありがとうございます。
mktimeで一旦、秒レベルまで変換して
+1した後に、localtimeで変換すれば良いのですよね?



No.16670

Re:秒数を+1秒する方法 
投稿者---かずま(2004/09/08 13:28:02)


> mktimeで一旦、秒レベルまで変換して
> +1した後に、localtimeで変換すれば良いのですよね?

tm_sec に 1 を足して mktime を呼べば、正しく修正されます。
#include <iostream>
#include <iomanip>
#include <sstream>
#include <ctime>

int main()
{
    using namespace std;

    istringstream ss("2004/09/07 11:12:59");
    struct tm t;  char c;
    ss >> t.tm_year >> c >> t.tm_mon >> c >> t.tm_mday
       >> t.tm_hour >> c >> t.tm_min >> c >> t.tm_sec;
    t.tm_year -= 1900;  t.tm_mon--;
    t.tm_sec++;
    mktime(&t);
    cout << setfill('0') << t.tm_year + 1900 << '/'
         << setw(2) << t.tm_mon + 1 << '/'
         << setw(2) << t.tm_mday << ' '
         << setw(2) << t.tm_hour << ':'
         << setw(2) << t.tm_min  << ':'
         << setw(2) << t.tm_sec  << endl;
    return 0;
}



No.16672

Re:秒数を+1秒する方法 
投稿者---プッチー(2004/09/08 13:51:42)



どうもありがとうございました。
無事にできました。