date.cpp
资源名称:c.rar [点击查看]
上传用户:puke2000
上传日期:2022-07-25
资源大小:912k
文件大小:1k
源码类别:

C#编程

开发平台:

Visual C++

  1. //=====================================
  2. // date.cpp
  3. // Class Date with year-month-day Version
  4. //=====================================
  5. #include"date.h"
  6. #include<iostream>
  7. #include<iomanip>
  8. using namespace std;
  9. //-------------------------------------
  10. const int Date::tians[]={0, 31, 59, 89, 120, 150, 181, 212, 242, 273, 303, 334};
  11. //-------------------------------------
  12. Date::Date(const string& s){
  13.   year = atoi(s.substr(0,4).c_str());
  14.   month = atoi(s.substr(5,2).c_str());
  15.   day = atoi(s.substr(8,2).c_str());
  16. }//------------------------------------
  17. void Date::i2ymd(int absDay){
  18.   absDay = absDay>0 && absDay<3650000 ? absDay : 1;
  19.   int n = absDay;
  20.   for(year=1; n>isLeapYear()+365; n-=isLeapYear()+365, year++);
  21.   for(month=1;(month<12&& n>(isLeapYear()&& month>2)+tians[month]); month++);
  22.   day = n-(isLeapYear()&& month>2)-tians[month-1];
  23. }//------------------------------------
  24. int Date::ymd2i()const{
  25.   int absDay =(year-1)*365 + (year-1)/4 - (year-1)/100 + (year-1)/400;
  26.   return absDay += tians[month-1] + (isLeapYear()&& month>2) + day;
  27. }//------------------------------------
  28. void Date::print(ostream& o)const{
  29.   o<<setfill('0')<<setw(4)<<year<<'-'<<setw(2)<<month<<'-'
  30.    <<setw(2)<<day<<"n"<<setfill(' ');
  31. }//------------------------------------
  32. ostream& operator<<(ostream& o, const Date& d){
  33.   d.print(o);
  34.   return o;
  35. }//------------------------------------
  36.