datetime.cpp
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:3k
源码类别:

模拟服务器

开发平台:

C/C++

  1. #include <windows.h>
  2. #include "datetime2.hh"
  3. #include <iomanip>
  4. using namespace std;
  5. //---------------------------------------------------------------
  6. ostream& mysql_date::out_stream (ostream& s) const
  7. {
  8.   char fill = s.fill('0');
  9.   ios::fmtflags flags = s.setf(ios::right);
  10.   s << setw(4) << year << '-'
  11.     << setw(2) << month << '-'
  12.     << setw(2) << day;
  13.   s.flags(flags);
  14.   s.fill(fill);
  15.   return s;
  16. }
  17. //-------------------------------------------------------------
  18. ostream& mysql_time::out_stream (ostream& s) const
  19. {
  20.   char fill = s.fill('0');
  21.   ios::fmtflags flags = s.setf(ios::right);
  22.   s << setw(2) << hour << ':'
  23.     << setw(2) << minute << ':'
  24.     << setw(2) << second;
  25.   s.flags(flags);
  26.   s.fill(fill);
  27.   return s;
  28. }
  29. //-------------------------------------------------------------
  30. ostream& MysqlDateTime::out_stream (ostream& s) const
  31. {
  32.   mysql_date::out_stream(s);
  33.   s << " ";
  34.   mysql_time::out_stream(s);
  35.   return s;
  36. }
  37. //-------------------------------------------------------------
  38. cchar* mysql_date::convert (cchar* str)
  39. {
  40.   char num[5];
  41.   num[0] =*str++; num[1] =*str++; num[2] =*str++; num[3] =*str++; num[4] = 0;
  42.   year = strtol(num,0,10);
  43.   if (*str == '-') str++;
  44.   num[0] = *str++; num[1] = *str++; num[2] = 0;
  45.   month = strtol(num,0,10);
  46.   if (*str == '-') str++;
  47.   num[0] = *str++; num[1] = *str++; num[2] = 0;
  48.   day = strtol(num,0,10);
  49.   return str;
  50. }
  51. //-------------------------------------------------------------
  52. string& mysql_date::convert(string& str)
  53. {
  54.    convert(str.c_str());
  55.    return str ;
  56. }
  57. //-------------------------------------------------------------
  58. cchar* mysql_time::convert (cchar* str)
  59. {
  60.   char num[5];
  61.   num[0] = *str++; num[1] = *str++; num[2] = 0;
  62.   hour = strtol(num,0,10);
  63.   if (*str == ':') str++;
  64.   num[0] = *str++; num[1] = *str++; num[2] = 0;
  65.   minute = strtol(num,0,10);
  66.   if (*str == ':') str++;
  67.   num[0] = *str++; num[1] = *str++; num[2] = 0;
  68.   second = strtol(num,0,10);
  69.   return str;
  70. }
  71. //-------------------------------------------------------------
  72. string& mysql_time::convert(string& str)
  73. {
  74.    convert(str.c_str());
  75.    return str ;
  76. }
  77. //-------------------------------------------------------------
  78. cchar* MysqlDateTime::convert (cchar* str)
  79. {
  80.   str = mysql_date::convert(str);
  81.   if (*str == ' ') str++;
  82.   str = mysql_time::convert(str);
  83.   return str;
  84. }
  85. //-------------------------------------------------------------
  86. string& MysqlDateTime::convert(string& str)
  87. {
  88.    convert(str.c_str());
  89.    return str ;
  90. }
  91. //-------------------------------------------------------------
  92. short int mysql_date::compare(const mysql_date* other) const
  93. {
  94.   if (year != other->year) return year - other->year;
  95.   if (month != other->month) return month - other->month;
  96.   return day - other->day;
  97. }
  98. //-------------------------------------------------------------
  99. short int mysql_time::compare(const mysql_time* other) const
  100. {
  101.   if (hour != other->hour) return hour - other->hour;
  102.   if (minute != other->minute) return minute - other->minute;
  103.   return minute - other->minute;
  104. }
  105. //-------------------------------------------------------------
  106. short int MysqlDateTime::compare(const MysqlDateTime &other) const
  107. {
  108.   int x;
  109.   x = mysql_date::compare(&other);
  110.   if (x) return x;
  111.   return mysql_time::compare(&other);
  112. }
  113. //end of file ==================================================