utility系统,Utility软件

  utility系统,Utility软件

  这里的日期实现比较简单:采用的是协调世界时。亦称协道界时日期(现在还不涉及到其他日期格式的转换如格利高里圣歌日历),且以星期一作为每周的第一天。剩下的就看代码吧:

  类UTIL_API YKDateTime

  公共:

  枚举DT _表单

  DTF_YMDHMS1,//%Y-%m-%d %H:%M:%S,中文格式选此

  DTF_YMDHMS2,//%m/%d/%Y %H:%M:%S

  DTF_YMDHM1,//%Y-%m-%d %H:%M,中文格式选此

  DTF_YMDHM2,//%Y/%m/%d %H:%M

  DTF_YMD1,//%Y-%m-%d,中文格式选此

  DTF_YMD2,//%Y/%m/%d

  DTF_HMS1,//%H:%M:%S,中文格式选此

  HM1DTF,//%H:%M,中文格式选此

  DTF_MDYHMS1,//%m-%d-%Y %H:%M:%S

  DTF_MDYHMS2,//%m/%d/%Y %H:%M:%S

  DTF_MDYHM1,//%m-%d-%Y %H:%M

  DTF_MDYHM2,//%m/%d/%Y %H:%M

  DTF_MDY1,//%m-%d-%Y

  DTF_MDY2,//%m/%d/%Y

  每秒的静态约克单位;

  每分钟静态约克时间;

  每小时静态约克单位;

  每天静态约克单位;

  //每月静态YK UINT;每个月的天数并不相同,因此不定义

  每年静态约克单位;

  公共:

  YKDateTime(YK _ TM TM=0);

  YKDateTime(YK_INT nYear,YK_INT nMonth,YK_INT nDay,

  YK_INT nHour=0,YK_INT nMinute=0,YK _ INT n second=0);

  ~ YKDateTime(void);

  静态YKDateTime GetLocalTime();

  YKDateTime运算符=(YK_TM)

  { m _ time=tm返回*这个}

  //是否是有效日期

  YK _布尔有效日期时间();

  YK _ TM GetDateTime()const { return m _ time;}

  YKDateTime GetDate();//获取年月日

  YK_INT GetYear()常量;//获取年

  YK_INT GetMonth()常量;//获取月

  YK_INT GetDay()常量;//获取天

  YK_INT GetHour()常量;//获取小时

  YK_INT GetMinute()常量;//获取分钟

  YK_INT GetSecond()常量;//获取秒

  YK_INT GetDayOfYear()常量;//获取时间所在年的第几天

  YK_INT GetDayOfMonth()常量;//获取时间所在月的第几天

  YK_INT GetDayOfWeek()常量;//获取时间所在周的第几天,星期一作为第一天,(1~7)

  YK_INT GetWeekOfYear()常量;//获取时间所在年的第几周,星期一作为第一天,(1~54)

  YK_INT GetWeekOfMonth()常量;//获取时间所在月的第几周

  YK_INT GetFirstDayOfWeek()常量;//获取时间所在周的第一天

  YKString格式(DT _ FORM dtf=DTF _ ymd HMS 1);

  //日期或时间中文格式化电影站年xx月xx日xx时xx分xx秒

  YKString格式CHS(DT _ FORM dtf=DTF _ ymd HMS 1);

  YKString格式后缀(YK_WCHAR后缀);

  //从字符串中提取日期时间

  静态YKDateTime解析datetime(const yk string str,DT _ FORM TF=DTF _ ymd HMS 1);

  静态YKDateTime parsetatetimechs(const yk string str,DT _ FORM TF=DTF _ ymd HMS 1);

  //与当前时间相比,是否流逝了英国压力单位秒

  YK _布尔YK_TM val常量;

  void添加第二个(YK _整数秒)

  { *this=(秒);}

  void AddMinute(YK整数分钟)

  {添加秒(分钟*每分钟);}

  无效添加时间(YK整数小时)

  {添加分钟(小时*每小时);}

  无效添加日(YK_INT日)

  {添加小时(天*每天);}

  void AddMonth(YK_INT月);

  无效添加年份(YK整数年)

  {添加月份(YEAR * PER _ YEAR);}

  YKDateTime运算符=(const YKDateTime tm)

  { this-m _ time=TM。m _ time返回*这个}

  YKDateTime运算符-=(const YKDateTime tm)

  { this-m _ time-=TM。m _ time返回*这个}

  约克布尔运算符==(常数YKDateTime tm)常数

  {返回this-m _ time==TM。m _ time}

  约克布尔算子!=(常量YKDateTime tm)常量

  {返回!(* this==TM);}

  约克布尔运算符(常量YKDateTime tm)常量

  {返回this-m _ time TM。m _ time}

  约克布尔运算符=(常数YKDateTime tm)常数

  {返回!(*这TM);}

  约克布尔运算符(常量YKDateTime tm)常量

  { return tm * this}

  约克布尔运算符=(常数YKDateTime tm)常数

  {返回!(*这TM);}

  受保护:

  YKString GetDTFormValue(DT _ FORM dtf);

  私人:

  约克时间;

  实现部分:

  YK_UINT YKDateTime:每秒=1000;

  YK_UINT YKDateTime:每分钟=60;

  YK _ UINT YKDateTime:PER _ HOUR=60;

  YK _ UINT YKDateTime:PER _ DAY=24;

  YK _ UINT YKDateTime:PER _ YEAR=12;

  YKDateTime:YKDateTime(YK _ TM TM/*=0 */)

  :m_time(tm)

  ydatetime:ydatetime(yk _ INT nyear、YK_INT nMonth、YK_INT nDay、yk _ INT nhur/*=0 */yk _ INT un nute/*=0 */yk _ INT n second/*=0 */0 */中文本)

  TM t1

  t1。TM _ year=Nye ar-1900;

  S7-1200可编程控制器:

  S7-1200可编程控制器:

  t1。TM _ hour=nhor:

  t1.tm_min=稀疏:

  S7-1200可编程控制器:

  m _ time=_ mktime 64(t1);

  ydatetime:~ ydatetime(请参阅)

  ydatetime:get local last()函数

  返回ydatetime(time(null));

  yk _ bool ydatetime:有效的日期时间()

  ydatetime dttemp(1900,1,1);

  返回m _ time=dttemp。m _ time

  ydatetime:getdate()函数

  返回ydatetime(get year()、getmonth()、get ay());

  yk _ int ydatetime:get year()const

  TM t1

  本地时间(t1,m时间):

  返回Q1。TM _ 1900年:

  yk _ int ydatetime:getmonth()const

  TM t1

  本地时间(t1,m时间):

  返回t1.tm_mon 1:

  yk _ int ydatetime:getday()const

  TM t1

  本地时间(t1,m时间):

  返回t1.tm_mday:

  yk _ int ydatetime:get hour()const

  TM t1

  本地时间(t1,m时间):

  返回t1。TM _ hour

  yk _ int ydatetime:get minute()const

  TM t1

  本地时间(t1,m时间):

  返回t1。TM _ min

  yk _ int ydatetime:get second()const

  TM t1

  本地时间(t1,m时间):

  返回t1.tm_sec:

  yk _ int ydatetime:getdayfyear()const

  TM t1

  本地时间(t1,m时间):

  充电温度[128];

  strftime(温度,128,“%j”,t1);

  返回阿托伊(临时):

  yk _ int ydatetime:getdayfmonth()const

  TM t1

  本地时间(t1,m时间):

  返回t1.tm_mday:

  yk _ int ydatetime:getdayfweek()const

  TM t1

  本地时间(t1,m时间):

  返回t1。TM _ wday=0?S7-1200可编程控制器:

  yk _ int ydatetime:getweekofyear()const

  TM t1

  本地时间(t1,m时间):

  充电温度[128];

  strftime(温度,128,“%W”,t1);

  返回atoi(temp)1;

  yk _ int ydatetime:getweekofmonth()const

  TM t1

  本地时间(t1,m时间):

  充电温度[128];

  strftime(温度,128,“%w”,t1);

  返回阿托伊(临时):

  yk _ int ydatetime:getfirstdayofweek()const

  ydatetime dt(m _ time):

  yk _ int day diff=get ayonfwek()-1:

  断言(dayDiff

  震颤性精神错乱(Delirium Tremens的缩写)先生AddDay(-dayDiff):

  返回dt .get ay();

  ykstring ykdatetime:格式(DT_FORM dtf /*=TF_YMDHMS1 */格式)

  TM t1

  本地时间(t1,m时间):

  yk _ wchar temp[128];

  wcsftime(temp,128,get tformvalue(dtf)).S7-1200可编程控制器:

  返回临时雇员

  y string ykhdatetime:format CHS(dt _ form dtf/*=dtf _ ymd HMS 1 */格式)

  TM t1

  本地时间(t1,m时间):

  ykstring海峡

  YK _布尔bDate=false:

  交换机(dtf)

  DTF_YMDHMS1案例:

  DTF_YMDHM1案例:

  DTF_YMD1案例:

  str=ykstring:格式(t1 . TM _ 1900年)L年";

  str=ystring:格式数字(t1。TM _ mon 1.2)l月";

  str=ystring:格式数字(t1。TM _ mday,2) L日";

  bDate=true:

  打断;打断;

  交换机(dtf)

  DTF_YMDHMS1案例:

  DTF_YMDHM1案例:

  DTF_HMS1案例:

  HM1 DTF案例:

  if(bdate)str=l“”;

  str=ystring:格式数字(t1。TM _小时,2) L时";

  str=ystring:格式数字(t1。TM _ min,2) L分";

  打断;打断;

  交换机(dtf)

  DTF_YMDHMS1案例:

  DTF_HMS1案例:

  str=ystring:格式数字(t1。TM _ sec,2) L秒";

  打断;打断;

  返回潜艇用热中子反应堆(submarine thermal reactor的缩写)

  ystring ydatetime:格式后缀(yk _ wchar后缀)

  ykstring海峡

  交换机(后缀)

  如果是这样:

  str=ykstring:格式(m _ time);

  打断;打断;

  嫁给我:

  str=ykstring:格式((yk _ double)m _ time)/per _ minute);

  打断;打断;

  h案:

  str=ys tring:format((yk _ double)m _ time)/(per _ hour * per _ minute));

  打断;打断;

  案例d:

  str=ys tring:format((yk _ double)m _ time)/(per _ day * per _ hour * per _ minute));

  打断;打断;

  默认值:返回字符串

  str=后缀

  返回潜艇用热中子反应堆(submarine thermal reactor的缩写)

  ydatetime:parse datetime(const y string str,DT_FORM tf /*=TF_YMDHMS1 */)

  交换机(tf)

  DTF_YMDHMS1案例:

  STD:vector ystring vecdt=str .剖析ys tring(l );

  if (vecDT.size()==2)

  STD:vector yk _ ulong veccdate=veccdt[0].解析yk _ ulong(l-);

  std:矢量YK _乌龙受害者=vecDT[1].解析yk _ ulong(l);

  如果(请参见cdate。size()==3受害者。size()==3)

  返回ydatetime(vecdate[0],vecDate[1],vecDate[2],victim[0],victim[1],victim[2]);

  打断;打断;

  DTF_YMDHMS2案例:

  STD:vector ystring vecdt=str .剖析ys tring(l );

  if (vecDT.size()==2)

  STD:vector yk _ ulong veccdate=veccdt[0].解析yk _ ulong(l /);

  std:矢量YK _乌龙受害者=vecDT[1].解析yk _ ulong(l);

  如果(请参见cdate。size()==3受害者。size()==3)

  返回ydatetime(vecdate[0],vecDate[1],vecDate[2],victim[0],victim[1],victim[2]);

  打断;打断;

  DTF_YMDHM1案例:

  STD:vector ystring vecdt=str .剖析ys tring(l );

  if (vecDT.size()==2)

  STD:vector yk _ ulong veccdate=veccdt[0].解析yk _ ulong(l-);

  std:矢量YK _乌龙受害者=vecDT[1].解析yk _ ulong(l);

  如果(参见cDate.size()==3个受害者。size()==2)

  返回ydatetime(vecdate[0],vecDate[1],vecDate[2],victim[0],victim[1]);

  打断;打断;

  DTF_YMDHM2案例:

  STD:vector ystring vecdt=str .剖析ys tring(l );

  if (vecDT.size()==2)

  STD:vector yk _ ulong veccdate=veccdt[0].解析yk _ ulong(l /);

  std:矢量YK _乌龙受害者=vecDT[1].解析yk _ ulong(l);

  如果(参见cDate.size()==3个受害者。size()==2)

  返回ydatetime(vecdate[0],vecDate[1],vecDate[2],victim[0],victim[1]);

  打断;打断;

  DTF_YMD1案例:

  矢量YK_ULONG vecDate=str .解析yk _ ulong(l-);

  如果(请参阅cDate.size()==3)

  返回ydatetime(vecdate[0],vecDate[1],vecDate[2]);

  打断;打断;

  DTF_YMD2案例:

  矢量YK_ULONG vecDate=str .解析yk _ ulong(l /);

  如果(请参阅cDate.size()==3)

  返回ydatetime(vecdate[0],vecDate[1],vecDate[2]);

  打断;打断;

  DTF_HMS1案例:

  std:矢量YK _乌龙受害者=str .解析yk _ ulong(l);

  如果(受害者。size()==3)

  返回ykhdatetime(1970,1,1,受害者[0],受害者[1],受害者[2]);

  打断;打断;

  HM1 DTF案例:

  std:矢量YK _乌龙受害者=str .解析yk _ ulong(l);

  如果(受害者。size()==2)

  返回ykhdatetime(1970,1,1,受害者[0],受害者[1]);

  打断;打断;

  dtf _ mdyhms 1案例:

  STD:vector ystring vecdt=str .剖析ys tring(l );

  if (vecDT.size()==2)

  STD:vector yk _ ulong veccdate=veccdt[0].解析yk _ ulong(l-);

  std:矢量YK _乌龙受害者=vecDT[1].解析yk _ ulong(l);

  如果(请参见cdate。size()==3受害者。size()==3)

  返回ydatetime(vecdate[2],vecDate[0],vecDate[1],victim[0],victim[1],victim[2]);

  打断;打断;

  dtf _ mdyhms 2案例:

  STD:vector ystring vecdt=str .剖析ys tring(l );

  if (vecDT.size()==2)

  STD:vector yk _ ulong veccdate=veccdt[0].解析yk _ ulong(l /);

  std:矢量YK _乌龙受害者=vecDT[1].解析yk _ ulong(l);

  如果(请参见cdate。size()==3受害者。size()==3)

  返回ydatetime(vecdate[2],vecDate[0],vecDate[1],victim[0],victim[1],victim[2]);

  打断;打断;

  DTF_MDYHM1案例:

  STD:vector ystring vecdt=str .剖析ys tring(l );

  if (vecDT.size()==2)

  STD:vector yk _ ulong veccdate=veccdt[0].解析yk _ ulong(l-);

  std:矢量YK _乌龙受害者=vecDT[1].解析yk _ ulong(l);

  如果(参见cDate.size()==3个受害者。size()==2)

  返回ydatetime(vecdate[2],vecDate[0],vecDate[1],victim[0],victim[1]);

  打断;打断;

  DTF_MDYHM2案例:

  STD:vector ystring vecdt=str .剖析ys tring(l );

  if (vecDT.size()==2)

  STD:vector yk _ ulong veccdate=veccdt[0].解析yk _ ulong(l /);

  std:矢量YK _乌龙受害者=vecDT[1].解析yk _ ulong(l);

  如果(参见cDate.size()==3个受害者。size()==2)

  返回ydatetime(vecdate[2],vecDate[0],vecDate[1],victim[0],victim[1]);

  打断;打断;

  DTF_MDY1案例:

  矢量YK_ULONG vecDate=str .解析yk _ ulong(l-);

  如果(请参阅cDate.size()==3)

  返回ydatetime(vecdate[2],vecDate[0],vecDate[1]);

  打断;打断;

  DTF mdy 2案例:

  矢量YK_ULONG vecDate=str .解析yk _ ulong(l /);

  如果(请参阅cDate.size()==3)

  返回ydatetime(vecdate[2],vecDate[0],vecDate[1]);

  打断;打断;

  返回0;

  y string ydatetime:getdtformvalue(dt _ form dtf)

  ykstring海峡

  交换机(dtf)

  DTF_YMDHMS1案例:

  str=l " % y-% m-% d % h:% m:% s ";

  打断;打断;

  DTF_YMDHMS2案例:

  str=l " % y/% m/% d % h:% m:% s;

  打断;打断;

  DTF_YMDHM1案例:

  str=l " % y-% m-% d % h:% m ";

  打断;打断;

  DTF_YMDHM2案例:

  str=l“% y/% m/% d % h:% m;

  打断;打断;

  DTF_YMD1案例:

  str=l“% y-% m-% d”;

  打断;打断;

  DTF_YMD2案例:

  str=l % y/% m/% d;

  打断;打断;

  DTF_HMS1案例:

  str=l " % h:% m:% s ";

  打断;打断;

  HM1 DTF案例:

  str=l“% h:% m;

  打断;打断;

  dtf _ mdyhms 1案例:

  str=l " % m-% d-% y % h:% m:% s ";

  打断;打断;

  dtf _ mdyhms 2案例:

  str=l“% m/% d/% y % h:% m:% s;

  打断;打断;

  案例DTF_MDYHM1:

  str=L " % M-% d-% Y % H:% M ";

  打破;

  案例DTF_MDYHM2:

  str=L " % M/% d/% Y % H:% M ";

  打破;

  案例DTF_MDY1:

  str=L " % m-% d-% Y ";

  打破;

  案例DTF_MDY2:

  str=L " % m/% d/% Y ";

  打破;

  返回字符串;

  YKDateTime YKDateTime:ParseDateTimeChs(const yk string str,DT_FORM tf /*=DTF_YMDHMS1*/)

  YKString:size_type fPos=0,lPos=0;

  STD:vector YK _ UINT ve cval;

  for(;lPos海峡。size();lPos)

  如果(字符串IsAlpha(lPos)

  YKString strTemp=str。substr(fPos,lPos-fPos);

  strTemp .向左修剪();

  vecVal.push_back(strTemp .转换YK因特

  fPos=lPos 1;

  开关(tf)

  案例DTF_YMDHMS1:

  返回YKDateTime(vecVal[0],vecVal[1],vecVal[2],vecVal[3],vecVal[4],vec val[5]);

  打破;

  案例DTF_YMDHM1:

  返回YKDateTime(vecVal[0],vecVal[1],vecVal[2],vecVal[3],vec val[4]);

  打破;

  案例DTF_YMD1:

  返回YKDateTime(vecVal[0],vecVal[1],vec val[2]);

  打破;

  案例DTF_HMS1:

  返回YKDateTime(1970,1,1,vecVal[0],vecVal[1],vec val[2]);

  打破;

  HM1DTF案例:

  返回YKDateTime(1970,1,1,vecVal[0],vec val[1]);

  打破;

  默认:断开

  返回0;

  YK _布尔YKDateTime:IsElapsed( YK_TM值)常量

  YKDateTime dt now=YKDateTime:GetLocalTime();

  现在返回(dt。m _ time-m _ time)=val;

  void YKDateTime:添加月份(YK _ INT月)

  tm t1

  localtime_s( t1,m _ time);

  YK_INT absMonth=月;

  如果(第0个月)

  absMonth=abs(月);

  YK _ INT年=ABS月/每_年;

  YK _ INT mon=ABS每月%每年;

  如果(第0个月)

  * this=YKDateTime(t1。TM _ year 1900年,t1.tm_mon mon,t1.tm_mday,t1.tm_hour,t1.tm_min,t1。TM _ sec);

  其他

  * this=YKDateTime(t1。TM _ year 1900年,t1.tm_mon-mon,t1.tm_mday,t1.tm_hour,t1.tm_min,t1。TM _ sec);

  }

utility系统,Utility软件