文章目录
一、源代码说明
freecplus是一个Linux系统下的C/C++开源框架,源代码请前往C语言技术网(www.freecplus.net)下载。
本文介绍的是freecplus框架的时间操作函数。
函数和类的声明文件是freecplus/_freecplus.h。
函数和类的定义文件是freecplus/_freecplus.cpp。
示例程序位于freecplus/demo目录中。
编译规则文件是freecplus/demo/makefile。
二、计算机时间的表示方法
UNIX操作系统根据计算机产生的年代和应用采用1970年1月1日作为UNIX的纪元时间,1970年1月1日0点作为计算机表示时间的是中间点,将从1970年1月1日开始经过的秒数用一个整数存放,这种高效简洁的时间表示方法被称为“Unix时间纪元”,向左和向右偏移都可以得到更早或者更后的时间。
在实际开发中,对日期和时间的操作场景非常多,例如程序启动和退出的时间,程序执行任务的时间,数据生成的时间,数据处理的各环节的时间等等。
在Linux系统中,自定义了time_t类型,如下:
typedef long time_t; // 时间值time_t为长整型long的别名。
三、获取操作系统的时间
取操作系统的时间,并把整数表示的时间转换为字符串表示的格式。
函数声明:
void LocalTime(char *out_stime,const char *in_fmt=0,const int in_interval=0);
参数说明:
stime:用于存放获取到的时间字符串。
timetvl:时间的偏移量,单位:秒,0是缺省值,表示当前时间,30表示当前时间30秒之后的时间点,-30表示当前时间30秒之前的时间点。
fmt:输出时间的格式,fmt每部分的含义:“yyyy”-年份;“mm”-月份;“dd”-日期;“hh24”-小时;“mi”-分钟;“ss”-秒,缺省是"yyyy-mm-dd hh24:mi:ss",目前支持以下格式:
"yyyy-mm-dd hh24:mi:ss"
"yyyymmddhh24miss"
"yyyy-mm-dd"
"yyyymmdd"
"hh24:mi:ss"
"hh24miss"
"hh24:mi"
"hh24mi"
"hh24"
"mi"
注意:
1)小时的表示方法是hh24,不是hh,这么做的目的是为了保持与数据库的时间表示方法一致;
2)以上列出了常用的时间格式,如果不能满足您应用开发的需求,请修改源代码timetostr函数增加更多的格式支持;
3)调用函数的时候,如果fmt与上述格式都匹配,stime的内容将为空。
示例(demo24.cpp)
/*
* 程序名:demo24.cpp,此程序演示freecplus框架中LocalTime时间函数的使用。
* 作者:C语言技术网(www.freecplus.net) 日期:20190525
*/
#include "../_freecplus.h"
int main()
{
char strtime[20];
memset(strtime,0,sizeof(strtime));
LocalTime(strtime,"yyyy-mm-dd hh24:mi:ss",-30