把自1970年1月1日以来的秒数转化成年月日(转)
#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; }