把自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;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值