亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cs_datetime.cpp

?? c-smile 一個語法類似與JS 又有點像C++的 編譯器
?? CPP
字號:
/*
*
* cs_datetime.cpp
*
* Copyright (c) 2001, 2002
* Andrew Fedoniouk - andrew@terra-informatica.org
* Portions: Serge Kuznetsov -  kuznetsov@deeptown.org
*
* See the file "COPYING" for information on usage 
* and redistribution of this file
*
*/
#include "cs_datetime.h"

namespace tool
{

#define LLABS(i) (((i)<0)?-(i):(i))

  //////////////////////////////////////////////////////////////////////
  // Construction/Destruction
  //////////////////////////////////////////////////////////////////////

#define MAX_TIME_BUFFER_SIZE 128

  // Constant array with months # of days of year
  int date_time::month_day_in_year [ 13 ] =
  {
    0, 31, 59, 90, 120, 151, 181,
    212, 243, 273, 304, 334, 365
  };



  // Static member for getting the current time
  const date_time
    date_time::now ()
  {
    time_t t;
    ::time ( &t );
    struct tm syst = *localtime ( &t );
    date_time dt;
    dt = syst;
    return dt;
  }


  date_time::date_time ( int year, int month, int day,
                         int hours, int minutes, int seconds,
                         int millis , int micros ,int nanos )
  // nMilli, nMicro & nNano default = 0
  {
    set ( year, month, day, hours, minutes, seconds, millis, micros, nanos );
  }

  // date_time operators

  const date_time&
    date_time::operator= ( const struct tm& syst )
  {
    datetime_s src;
    src.year   = syst.tm_year + 1900;
    src.month  = syst.tm_mon + 1;
    src.day    = syst.tm_mday;
    src.hour   = syst.tm_hour;
    src.minute = syst.tm_min;
    src.second = syst.tm_sec;
    src.millis = 0;
    src.micros = 0;
    src.nanos  = 0;
    cvt ( _time, src );
    return *this;
  }


  bool
    date_time::set ( int year, int month, int day,
                     int hours, int minutes, int seconds,
                     int millis, int micros, int nanos )
  {
    datetime_s src;
    src.year   = year;
    src.month  = month;
    src.day    = day;
    src.hour   = hours;
    src.minute = minutes;
    src.second = seconds;
    src.millis = millis;
    src.micros = micros;
    src.nanos  = nanos;

    return cvt ( _time, src );
  }

  // HighTime helper function, static function
  bool
    date_time::cvt ( datetime_t& dst, const datetime_s &src )
  {
    datetime_t date;

    int days    = src.day;
    int hours   = src.hour;
    int minutes = src.minute;
    int seconds = src.second;
    int millis  = src.millis;
    int micros  = src.micros;

    int nanos100 = ( src.nanos + 50 ) / 100;

    if ( src.year > 29000 || src.year < -29000 ||
         src.month < 1 || src.month > 12 )
      return false;

    bool is_leap_year = ( ( src.year & 3 )   == 0 ) &&
                        ( ( src.year % 100 ) != 0 ||
                          ( src.year % 400 ) == 0 );

    /*int nDaysInMonth =
    anMonthDayInYear[SrcTime.nMonth] - anMonthDayInYear[SrcTime.nMonth-1] +
    ((bIsLeapYear && SrcTime.nDay == 29 && SrcTime.nMonth == 2) ? 1 : 0);*/

    // Adjust time and frac time
    micros   += nanos100 / 10;
    nanos100 %= 10;
    millis   += micros   / 1000;
    micros   %= 1000;
    seconds  += millis   / 1000;
    millis   %= 1000;
    minutes  += seconds  / 60;
    seconds  %= 60;
    hours    += minutes  / 60;
    minutes  %= 60;
    days     += hours    / 24;
    hours    %= 24;

    //It is a valid date; make Jan 1, 1AD be 1
    date = src.year * 365L + src.year / 4 - src.year / 100 + src.year / 400 +
           month_day_in_year [ src.month - 1 ] + days;

    //  If leap year and it's before March, subtract 1:
    if ( src.month <= 2 && is_leap_year )
      --date;

    //  Offset so that 01/01/1601 is 0
    date -= 584754L;

    // Change date to seconds
    date *= 86400L;
    date += hours * 3600L + minutes * 60L + seconds;

    // Change date to hundreds of nanoseconds
    date *= 10000000L;
    date += ( millis * 10000L ) + ( micros * 10L ) + nanos100;

    dst = date;

    return true;
  }


  bool
    date_time::cvt ( datetime_s& dst, const datetime_t &src )
  {
    datetime_t temptime;
    long days_absolute;     // Number of days since 1/1/0
    long secs_in_day;       // Time in seconds since midnight

    long years400;          // Number of 400 year increments since 1/1/0
    long century400;        // Century within 400 year block (0,1,2 or 3)
    long years4;            // Number of 4 year increments since 1/1/0
    long day4;              // Day within 4 year block
    //  (0 is 1/1/yr1, 1460 is 12/31/yr4)
    int  year4;             // Year within 4 year block (0,1,2 or 3)
    bool leap4 = true;      // TRUE if 4 year block includes leap year
    long nanos100_this_day;


    temptime = src;

    nanos100_this_day  = (long) ( temptime % 10000000L );
    temptime          /= 10000000L;
    secs_in_day        = (long) ( temptime % 86400L );
    temptime          /= 86400L;
    days_absolute      = (long) ( temptime );
    days_absolute     += 584754L;	//  adjust days from 1/1/0 to 01/01/1601

    // Calculate the day of week (sun=1, mon=2...)
    //   -1 because 1/1/0 is Sat.  +1 because we want 1-based
    dst.day_of_week = (int) ( ( days_absolute - 1 ) % 7L ) + 1;

    // Leap years every 4 yrs except centuries not multiples of 400.
    years400 = (long) ( days_absolute / 146097L );

    // Set days_absolute to day within 400-year block
    days_absolute %= 146097L;

    // -1 because first century has extra day
    century400 = (long) ( ( days_absolute - 1 ) / 36524L );

    // Non-leap century
    if ( century400 != 0 )
    {
      // Set days_absolute to day within century
      days_absolute = ( days_absolute - 1 ) % 36524L;

      // +1 because 1st 4 year increment has 1460 days
      years4 = (long) ( ( days_absolute + 1 ) / 1461L );

      if ( years4 != 0 )
        day4 = (long) ( ( days_absolute + 1 ) % 1461L );
      else
      {
        leap4 = false;
        day4 = (long) days_absolute;
      }
    }
    else
    {
      // Leap century - not special case!
      years4 = (long) ( days_absolute / 1461L );
      day4 = (long) ( days_absolute % 1461L );
    }

    if ( leap4 )
    {
      // -1 because first year has 366 days
      year4 = ( day4 - 1 ) / 365;
      if ( year4 != 0 )
        day4 = ( day4 - 1 ) % 365;
    }
    else
    {
      year4 = day4 / 365;
      day4 %= 365;
    }

    // day4 is now 0-based day of year. Save 1-based day of year, year number
    dst.day_of_year = (int) day4 + 1;
    dst.year = years400 * 400 + century400 * 100 + years4 * 4 + year4;

    // Handle leap year: before, on, and after Feb. 29.
    if ( year4 == 0 && leap4 )
    {
      // Leap Year
      if ( day4 == 59 )
      {
        /* Feb. 29 */
        dst.month = 2;
        dst.day   = 29;
        goto DoTime;
      }

      // Pretend it's not a leap year for month/day comp.
      if ( day4 >= 60 )
        --day4;
    }

    // Make day4 a 1-based day of non-leap year and compute
    // month/day for everything but Feb. 29.
    ++day4;

    // Month number always >= n/32, so save some loop time */
    for ( dst.month = ( day4 >> 5 ) + 1;
          day4 > month_day_in_year [ dst.month ];
          dst.month++ );

    dst.day = (int) ( day4 - month_day_in_year [ dst.month - 1 ] );

  DoTime:
    if ( secs_in_day == 0 )
      dst.hour = dst.minute = dst.second = 0;
    else
    {
      dst.second = (unsigned int) secs_in_day % 60L;
      long minutes_in_day = secs_in_day / 60L;
      dst.minute = (unsigned int) minutes_in_day % 60;
      dst.hour   = (unsigned int) minutes_in_day / 60;
    }

    if ( nanos100_this_day == 0 )
      dst.millis = dst.micros = dst.nanos = 0;
    else
    {
      dst.nanos =  (unsigned int) ( ( nanos100_this_day % 10L ) * 100L );
      long millis_this_day = nanos100_this_day / 10L;
      dst.micros = (unsigned int) millis_this_day % 1000;
      dst.millis = (unsigned int) millis_this_day / 1000;
    }
    return true;
  }

  bool
    date_time::cvt ( struct tm& dst, const datetime_s& src )
  {
    // Convert internal tm to format expected by runtimes (sfrtime, etc)
    dst.tm_year  = src.year  - 1900;  // year is based on 1900
    dst.tm_mon   = src.month - 1;      // month of year is 0-based
    dst.tm_wday  = src.day_of_week - 1;     // day of week is 0-based
    dst.tm_yday  = src.day_of_year - 1;     // day of year is 0-based
    dst.tm_mday  = src.day;
    dst.tm_hour  = src.hour;
    dst.tm_min   = src.minute;
    dst.tm_sec   = src.second;
    dst.tm_isdst = 0;
    return true;
  }

  int
    date_time::year () const
  {
    datetime_s ts;
    cvt ( ts, _time );
    return ts.year;
  }

  int
    date_time::month () const       // month of year (1 = Jan)
  {
    datetime_s ts;
    cvt ( ts, _time );
    return ts.month;
  }

  int
    date_time::day () const         // day of month (0-31)
  {
    datetime_s ts;
    cvt ( ts, _time );
    return ts.day;
  }

  int
    date_time::hours () const        // hour in day (0-23)
  {
    datetime_s ts;
    cvt ( ts, _time );
    return ts.hour;
  }

  int
    date_time::minutes () const      // minute in hour (0-59)
  {
    datetime_s ts;
    cvt ( ts, _time );
    return ts.minute;
  }

  int
    date_time::seconds () const      // second in minute (0-59)
  {
    datetime_s ts;
    cvt ( ts, _time );
    return ts.second;
  }

  int
    date_time::millis () const // millisecond in second (0-999)
  {
    datetime_s ts;
    cvt ( ts, _time );
    return ts.millis;
  }

  int
    date_time::micros () const // microsecond in millisecond (0-999)
  {
    datetime_s ts;
    cvt ( ts, _time );
    return ts.micros;
  }

  int
    date_time::nanos () const  // nanosecond in millisecond (0-999), step of 100ns
  {
    datetime_s ts;
    cvt ( ts, _time );
    return ts.nanos;
  }


  int
    date_time::day_of_week () const   // 1=Sun, 2=Mon, ..., 7=Sat
  {
    datetime_s ts;
    cvt ( ts, _time );
    return ts.day_of_week;
  }

  int
    date_time::day_of_year () const   // days since start of year, Jan 1 = 1
  {
    datetime_s ts;
    cvt ( ts, _time );
    return ts.day_of_year;
  }


  void
    date_time::nanos ( int nv )
  {
    datetime_s dts;
    cvt ( dts, _time );
    dts.nanos += ( nv - dts.nanos );
    cvt ( _time, dts );
  }

  void
    date_time::micros ( int nv )
  {
    datetime_s dts;
    cvt ( dts, _time );
    dts.micros += ( nv - dts.micros );
    cvt ( _time, dts );
  }


  void
    date_time::millis ( int nv )
  {
    datetime_s dts;
    cvt ( dts,_time );
    dts.millis += ( nv - dts.millis );
    cvt ( _time, dts );
  }

  void
    date_time::seconds ( int nv )
  {
    datetime_s dts;
    cvt ( dts, _time );
    dts.second += ( nv - dts.second );
    cvt ( _time, dts );
  }

  void
    date_time::minutes ( int nv )
  {
    datetime_s dts;
    cvt ( dts, _time );
    dts.minute += ( nv - dts.minute );
    cvt ( _time, dts );
  }

  void
    date_time::hours ( int nv )
  {
    datetime_s dts;
    cvt ( dts, _time );
    dts.hour += ( nv - dts.hour );
    cvt ( _time, dts );
  }

  void
    date_time::day ( int nv )
  {
    datetime_s dts;
    cvt ( dts, _time );
    dts.day += ( nv - dts.day );
    cvt ( _time, dts );
  }

  void
    date_time::month ( int nv )
  {
    datetime_s dts;
    cvt ( dts, _time );
    dts.month += ( nv - dts.month );
    dts.year  += dts.month / 12;
    dts.month %= 12;
    cvt ( _time, dts );
  }

  void
    date_time::year ( int nv )
  {
    datetime_s dts;
    cvt ( dts, _time );
    dts.year += ( nv - dts.year );
    cvt ( _time, dts );
  }

  date_time::operator string () const
  {
    char *fmt = "%04d-%02d-%02d %02d:%02d:%02d:%03d";
    datetime_s dts;
    if ( cvt ( dts, _time ) )
    {
      string s;
      s.printf ( fmt, dts.year, dts.month, dts.day, dts.hour,
                 dts.minute, dts.second, dts.millis );
      return s;
    }
    else
      return "<erroneous date>";
  }

  datetime_t
    date_time::absolute_millis ()
  {
    return _time / 10000L;
  }

  void
    date_time::absolute_millis ( datetime_t t )
  {
    _time = t * 10000L;
  }

  bool
    date_time::systemtime ( struct tm& syst )
  {
    date_time::datetime_s dts;
    cvt ( dts, _time );
    memset ( &syst, 0, sizeof syst );
    syst.tm_year  = dts.year  - 1900;
    syst.tm_mon   = dts.month - 1;
    syst.tm_mday  = dts.day;
    syst.tm_hour  = dts.hour;
    syst.tm_min   = dts.minute;
    syst.tm_sec   = dts.second;
    syst.tm_wday  = dts.day_of_week - 1;
    syst.tm_yday  = dts.day_of_year - 1;
    return true;
  }

};

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲va韩国va欧美va精品 | 日韩一区二区三区电影在线观看| 国产成人精品1024| 日韩理论片在线| 一本一本大道香蕉久在线精品| 国产欧美在线观看一区| 粉嫩一区二区三区在线看| 国产精品毛片无遮挡高清| 色综合一个色综合| 亚洲成人免费av| 精品蜜桃在线看| 成人av在线电影| 一区二区在线观看免费视频播放| 欧美日韩国产大片| 国产制服丝袜一区| 自拍偷自拍亚洲精品播放| 欧美伊人久久久久久久久影院 | 国产亚洲欧美日韩在线一区| 岛国精品在线播放| 亚洲午夜视频在线观看| 日韩欧美www| 成人免费看的视频| 偷偷要91色婷婷| 国产婷婷精品av在线| 日本道在线观看一区二区| 日本最新不卡在线| 欧美极品aⅴ影院| 欧美四级电影在线观看| 国产做a爰片久久毛片| 亚洲三级电影全部在线观看高清| 欧美久久久久中文字幕| 69久久99精品久久久久婷婷 | 亚洲三级在线观看| 久久99精品久久久久| 国产精品色哟哟| 欧美三级在线视频| 国产一区二区三区免费看| 中文字幕亚洲一区二区va在线| 欧美日韩在线亚洲一区蜜芽| 国产精品中文字幕日韩精品| 一区二区三区在线观看网站| 精品国产乱码久久久久久图片| 色综合久久久网| 久久99久久久欧美国产| 亚洲精品视频免费观看| 久久久无码精品亚洲日韩按摩| 色婷婷久久久综合中文字幕| 久久精品99国产精品| 亚洲欧美经典视频| 久久先锋影音av鲁色资源网| 欧美系列在线观看| 处破女av一区二区| 青青草97国产精品免费观看 | 欧洲一区二区av| 国产在线播放一区| 午夜在线成人av| 国产精品国产三级国产| 日韩欧美久久一区| 欧美在线观看18| 成人午夜激情影院| 久久国产精品72免费观看| 国产精品免费av| 韩国理伦片一区二区三区在线播放| 成人av网站免费观看| 一本大道综合伊人精品热热| 在线免费一区三区| 亚洲午夜影视影院在线观看| www久久精品| 欧美日韩精品福利| 97精品国产露脸对白| 国内精品自线一区二区三区视频| 亚洲国产精品精华液网站| 国产精品久久久久久久久久免费看| 欧美电影免费提供在线观看| 91久久精品一区二区三区| 国产成人亚洲综合色影视| 美女任你摸久久| 性欧美疯狂xxxxbbbb| 一区二区三区 在线观看视频 | 91精品国产综合久久精品麻豆| 99久久久久久99| 国产成人综合亚洲网站| 免费欧美在线视频| 亚洲18女电影在线观看| 亚洲一区二区三区四区的| 亚洲欧洲日韩综合一区二区| 久久久五月婷婷| 精品盗摄一区二区三区| 日韩一区二区不卡| 91精品黄色片免费大全| 欧美日韩视频第一区| 日本精品一区二区三区高清 | 丁香天五香天堂综合| 日本大香伊一区二区三区| 成+人+亚洲+综合天堂| 喷水一区二区三区| 日日夜夜免费精品| 午夜精品久久久久久久久久 | 91污在线观看| 国产91丝袜在线播放| 国产乱理伦片在线观看夜一区| 精品一区二区免费在线观看| 免费欧美在线视频| 久久91精品久久久久久秒播| 免费美女久久99| 精品在线你懂的| 经典一区二区三区| 国产伦精品一区二区三区免费迷| 国产一区二区美女| 久久精品久久综合| 美女视频黄频大全不卡视频在线播放| 免费成人小视频| 久久 天天综合| 国产主播一区二区三区| 国产一区二区三区四区在线观看| 狠狠色丁香九九婷婷综合五月| 精品一区二区三区免费视频| 国产在线不卡一卡二卡三卡四卡| 国产精品自在在线| 国产成a人亚洲精品| 国产精品一二三区在线| 成人夜色视频网站在线观看| 成人高清免费观看| 91免费版在线| 91国内精品野花午夜精品 | 精品国产免费久久| 国产亚洲欧洲一区高清在线观看| 国产亚洲美州欧州综合国| 国产精品毛片a∨一区二区三区| 国产精品传媒在线| 亚洲一区二区三区三| 午夜国产精品一区| 久久电影网站中文字幕| 国产精品77777竹菊影视小说| 成人免费视频一区| 91国偷自产一区二区开放时间| 欧美精品亚洲二区| 精品国产乱码久久久久久影片| 国产欧美视频一区二区| 亚洲女同一区二区| 日韩电影在线一区| 国产乱淫av一区二区三区| 99视频在线观看一区三区| 欧美自拍偷拍一区| 日韩欧美国产麻豆| 亚洲国产精品ⅴa在线观看| 亚洲精品菠萝久久久久久久| 视频一区二区中文字幕| 国产麻豆精品95视频| 91丨porny丨蝌蚪视频| 欧美日韩精品一区二区天天拍小说| 7777精品伊人久久久大香线蕉 | 欧美精品第一页| 精品不卡在线视频| 亚洲高清不卡在线| **性色生活片久久毛片| 欧美成人video| 欧美美女一区二区| 欧美二区乱c少妇| 成人黄色在线看| 国产黄色精品视频| 国产日韩欧美精品综合| 综合久久给合久久狠狠狠97色 | 日韩欧美久久久| 中文字幕一区二区三区在线观看| 亚洲国产毛片aaaaa无费看| 狠狠色丁香久久婷婷综合_中| 91免费观看在线| 精品久久久久一区| 一区二区三区在线免费视频| 精品一区二区免费视频| 在线精品亚洲一区二区不卡| 精品成人免费观看| 亚洲成国产人片在线观看| 精品一区二区三区在线观看国产| 成人h版在线观看| 91精品国产福利在线观看| 国产精品成人午夜| 久久99精品久久久| 色吊一区二区三区| 久久精品免视看| 奇米精品一区二区三区在线观看| www.亚洲免费av| 日韩免费高清电影| 亚洲人成影院在线观看| 精品中文字幕一区二区| 欧美自拍丝袜亚洲| 国产精品久久久久久久久晋中 | 欧美亚洲动漫制服丝袜| 国产日韩欧美一区二区三区综合| 婷婷一区二区三区| 99久久综合99久久综合网站| 精品理论电影在线观看| 亚洲一区二区欧美日韩| 成人涩涩免费视频| 久久久亚洲欧洲日产国码αv| 午夜免费久久看| 91一区二区在线| 国产欧美一区二区三区鸳鸯浴| 男女激情视频一区|