C/C++ 实现时间的加减以及时间和字符串的互换

最近项目是写个软件,软件本身并不困难,主要是通过周期从数据库查找数据进行一定操作后再插到另一张表中去。在写这个软件的过程中,对时间有一定的操作,在此做一点总结,以备后用。

主要用到的函数有如下几个:

time_t time(time_t* t);
tm* localtime(time_t* t);
double difftime(time_t t1, time_t t2);
char* ctime(const time_t* t);
time_t mktime(tm* tm_);

size_t strftime (char* ptr, size_t maxsize, const char* format,const tm* timeptr );
char* strptime(const char* buf,const char* format,tm* timeptr)

各个函数的作用这里就暂不表述了。本文主要对以下几点进行总结:

  1. 时间日期字符串的获取
  2. 时间和字符串的互相转换
  3. 时间的加减

1.时间日期字符串的获取

刚开始,我获得日期时间字符串的方式是通过time()函数获得,然后通过localtime函数得到time结构体,因为tm结构体内储存的才是我们想要的。但是呢,我要插入到数据库中,我需要的是一个字符串,所以我就自己组包了,代码如下;

//代码0
time_t* now;
tm* Tm;
char time_string[20] = {0};
time(now);
Tm = localtime(now);
snprintf(time_string, sizeof(time_string)-1,"%4d-%02d-%02d %02d:%02d:%02d",
            1900 + Tm->tm_year,
            1 + Tm->tm_mon,
            Tm->tm_mday,
            Tm->tm_hour,
            Tm->tm_min,
            Tm->tm_sec);

在我的项目里,上述的time_t和tm结构体都是类中的私有成员,我把组包的过程写成了一个接口,周期时间是以秒为单位写在配置文件中的,这样当每个周期变化的时候,我是直接对time_t进行加减操作,这样每个周期都能得到其开始时间结束时间的字符串,效果如下:

//代码1
#include <ctime>
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <ctring>
using namespace std;

const int TERM = 60;

int main()
{
	time_t now;
	tm* Tm;
	char time_string[20] = {0};

	time(&now);
	Tm = localtime(&now);
  • 1
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值