Convert seconds to Days, Minutes and Seconds

后端 未结 4 610
走了就别回头了
走了就别回头了 2021-01-02 09:41

Hey everyone. I\'ve continuing to learn C++ and I\'ve been set the \'challenge\' of converting seconds to format as the Days,Minutes and Seconds.

For example: 316000

相关标签:
4条回答
  • 2021-01-02 09:58

    For example: 31600000 = 365 days, 46 minutes, 40 seconds.

    Really?

    $ bc
    365*24*60*60 + 46*60 + 40
    31538800
    
    365*24*60*60 + 1066*60 + 40
    31600000
    

    Did you mean "convert the input into days, hours, minutes and seconds, and then discard the hours" or "convert the input into days, total minutes within a day (i.e. can be more than 60), and seconds"?

    In the second case I think you should replace the instruction for minutes with

    long minutes = input_seconds / secs_to_min % (mins_in_hour * hours_in_day);
    
    0 讨论(0)
  • 2021-01-02 10:00

    One of the things about programming is that there is never just one way to do something. In fact if I were to set my mind to it, I might be able to come up with a dozen completely different ways to accomplish this. You're not missing anything if your code meets requirements.

    For your amusement, here's a way to format up hours:minutes:seconds under Windows (elapsed is a double & represents number of seconds elapsed since... something)

    sprintf_s<bufSize>(buf, "%01.0f:%02.0f:%02.2f", floor(elapsed/3600.0), floor(fmod(elapsed,3600.0)/60.0), fmod(elapsed,60.0));
    
    0 讨论(0)
  • 2021-01-02 10:14

    I think is the challenge from Stephen Prata's book. I did it as follows:

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        long input_seconds = 31600000;
    
        const int cseconds_in_day = 86400;
        const int cseconds_in_hour = 3600;
        const int cseconds_in_minute = 60;
        const int cseconds = 1;
    
        long long days = input_seconds / cseconds_in_day;
        long hours = (input_seconds % cseconds_in_day) / cseconds_in_hour;
        long minutes = ((input_seconds % cseconds_in_day) % cseconds_in_hour) / cseconds_in_minute;
        long seconds = (((input_seconds % cseconds_in_day) % cseconds_in_hour) % cseconds_in_minute) / cseconds;
        cout << input_seconds << " seconds is " << days << " days, " << hours << " hours, " << minutes << " minutes, and " << seconds << " seconds.";
    
        cin.get();
        return 0;
    }
    
    0 讨论(0)
  • 2021-01-02 10:25

    this seems to me to be the easiest way to convert seconds into DD/hh/mm/ss:

    #include <time.h>
    #include <iostream>
    using namespace std;    
    
    time_t seconds(1641); // you have to convert your input_seconds into time_t
    tm *p = gmtime(&seconds); // convert to broken down time
    
    cout << "days = " << p->tm_yday << endl;
    cout << "hours = " << p->tm_hour << endl;
    cout << "minutes = " << p->tm_min  << endl;
    cout << "seconds = " << p->tm_sec << endl;
    

    I hope it helps!

    Regards,

    Stoycho

    0 讨论(0)
提交回复
热议问题