码迷,mamicode.com
首页 > 其他好文 > 详细

把自1970年1月1日以来的秒数转化成年月日

时间:2015-05-13 12:29:18      阅读:92      评论:0      收藏:0      [点我收藏+]

标签:

#include <iostream>

using namespace std;
 
bool IsRound(int year){
 if((year%100)&&(year%4==0)) return 1;
 if((year%100==0)&&(year%400==0)) return 1;
 return 0;
}
int main() {
 int n;
 int year_s[2]= {365*24*60*60, 366*24*60*60};
 int month_s[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},
   {31,29,31,30,31,30,31,31,30,31,30,31}};
 int day_s = 24*60*60;
 int hour_s = 60*60;
 int minute_s = 60;
 
  
 
 while(cin>>n){
    int temp = n;
    int year=1970;
         int month=1;
         int day=1;
         int hour=0;
         int minute=0;
         int second=0;
 
    while(temp>=60){
 
     int flag= IsRound(year);
     if(temp>=year_s[flag]) { year++; temp-=year_s[flag]; }
     else if(temp>=day_s){
      int days = temp/day_s;
      temp=temp%day_s;
      int i=0;
      int flag = IsRound(year);
      int hh=31;
      while(days>=hh){
       days-=month_s[flag][i++];
       hh=month_s[flag][i];
       }
      month+= i;
      day+=days;
 
     }else if(temp>=hour_s){
          hour=temp/hour_s;
          temp%=hour_s;
     }else if(temp>=minute_s){
           minute = temp/minute_s;
           temp%=minute_s;
     }
     }
     second = temp;
 
        cout<<year<<"-";
      if(month/10==0) cout<<"0";
      cout<<month<<"-";
      if(day/10==0) cout<<"0";
      cout<<day<<" ";
      if(hour/10==0) cout<<"0";
      cout<<hour<<":";
      if(minute/10==0) cout<<"0";
      cout<<minute<<":";
      if(second/10==0) cout<<"0";
      cout<<second<<endl;
 }
 
 
 return 0;
}

把自1970年1月1日以来的秒数转化成年月日

标签:

原文地址:http://www.cnblogs.com/lidabo/p/4499974.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!