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

C#编程

开发平台:

Visual C++

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