C++ 字符串转时间 与 时间转转字符串
1、常用的时间存储方式
1)time_t类型,这本质上是一个长整数,表示从1970-01-01 00:00:00到目前计时时间的秒数,如果需要更精确一点的,可以使用timeval精确到毫秒。
2)tm结构,这本质上是一个结构体,里面包含了各时间字段
struct tm { int tm_sec; /* seconds after the minute - [0,59] */ int tm_min; /* minutes after the hour - [0,59] */ int tm_hour; /* hours since midnight - [0,23] */ int tm_mday; /* day of the month - [1,31] */ int tm_mon; /* months since January - [0,11] */ int tm_year; /* years since 1900 */ int tm_wday; /* days since Sunday - [0,6] */ int tm_yday; /* days since January 1 - [0,365] */ int tm_isdst; /* daylight savings time flag */ };
其中tm_year表示从1900年到目前计时时间间隔多少年,如果是手动设置值的话,tm_isdst通常取值-1。
2、常用的时间函数
time_t time(time_t *t); //取得从1970年1月1日至今的秒数
char *asctime(const struct tm *tm); //将结构中的信息转换为真实世界的时间,以字符串的形式显示
char *ctime(const time_t *timep); //将timep转换为真是世界的时间,以字符串显示,它和asctime不同就在于传入的参数形式不一样
struct tm *gmtime(const time_t *timep); //将time_t表示的时间转换为没有经过时区转换的UTC时间,是一个struct tm结构指针
struct tm *localtime(const time_t *timep); //和gmtime类似,但是它是经过时区转换的时间。
time_t mktime(struct tm *tm); //将struct tm 结构的时间转换为从1970年至今的秒数
int gettimeofday(struct timeval *tv, struct timezone *tz); //返回当前距离1970年的秒数和微妙数,后面的tz是时区,一般不用
double difftime(time_t time1, time_t time2); //返回两个时间相差的秒数
3、时间与字符串的转换
需要包含的头文件如下
#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <string.h>
1)unix/windows下时间转字符串参考代码
time_t t; //秒时间
tm* local; //本地时间
tm* gmt; //格林威治时间
char buf[128]= {0}; t = time(NULL); //获取目前秒时间
local = localtime(&t); //转为本地时间
strftime(buf, 64, "%Y-%m-%d %H:%M:%S", local);
std::cout << buf << std::endl; gmt = gmtime(&t);//转为格林威治时间
strftime(buf, 64, "%Y-%m-%d %H:%M:%S", gmt);
std::cout << buf << std::endl;
2)unix字符串转时间参考代码
tm tm_;
time_t t_;
char buf[128]= {0}; strcpy(buf, "2012-01-01 14:00:00");
strptime(buf, "%Y-%m-%d %H:%M:%S", &tm_); //将字符串转换为tm时间
tm_.tm_isdst = -1;
t_ = mktime(&tm_); //将tm时间转换为秒时间
t_ += 3600; //秒数加3600 tm_ = *localtime(&t_);//输出时间
strftime(buf, 64, "%Y-%m-%d %H:%M:%S", &tm_);
std::cout << buf << std::endl;
3)由于windows下没有strptime函数,所以可以使用scanf来格式化
time_t StringToDatetime(char *str)
{ tm tm_; int year, month, day, hour, minute,second; sscanf(str,"%d-%d-%d %d:%d:%d", &year, &month, &day, &hour, &minute, &second); tm_.tm_year = year-1900; tm_.tm_mon = month-1; tm_.tm_mday = day; tm_.tm_hour = hour; tm_.tm_min = minute; tm_.tm_sec = second; tm_.tm_isdst = 0; time_t t_ = mktime(&tm_); //已经减了8个时区 return t_; //秒时间
}
C++ 字符串转时间 与 时间转转字符串相关推荐
- SQL Server(第二章) 字符串函数、日期时间函数、转换函数
--1.CONCAT 函数:字符串连接(支持sql server2012 SQL规则 如果与NULL连接返回NILL) SELECT empid,CONCAT(firstname,lastname) ...
- python time,datetime当前时间,昨天时间,时间戳和字符串的转化
由于在使用经常会用到time 模块,所以把经常使用到方法记录下来. 首先把所有需要用到的模块导入进来: import time, datetime 1.当前时间-时间戳 # 当前时间戳 current ...
- python字符串转日期_Python:将字符串时间字典转换为日期时间
我有一个词典提醒[],其中包括关键的alert_date.所有日期/时间都存储为字符串.我在Django中显示日期,但模板无法格式化存储为sting的时间.所以,我想在我的视图中将其转换为: foo ...
- Java但中获取时间将时间转换成字符串格式(年月日格式)
一:直接上马拿走: package cn.wyj.one;import java.text.DateFormat; import java.text.SimpleDateFormat; import ...
- mysql添加字符串日期时间_mysql学习笔记--- 字符串函数、日期时间函数
一.常见字符串函数:1.CHAR_LENGTH 获取长度(字符为单位) 2.FORMAT 格式化 3.INSERT 替换的方式插入 4.INSTR 获取位置 5.LEFT/RIGHT 取左. ...
- 面试官问:mysql中时间日期类型和字符串类型的选择
摘要:MySQL中有多种表示时间日期的数据类型,主要有YEAR.TIME.DATE.DATETIME.TIMESTAMP等 本文分享自华为云社区<一针见血,mysql中时间日期类型和字符串类型的 ...
- ?请问怎样将excel表格中的时间格式读取为字符串格式?
?请问怎样将excel表格中的时间格式读取为字符串格式? Delphi / Windows SDK/API http://www.delphi2007.net/DelphiNetwork/html/d ...
- golang 时间戳_go语言学习笔记(13)-defer函数、字符串常用函数和时间日期函数...
函数-defer 在函数中,程序员经常需要创建资源(比如:数据库连接.文件句柄.锁等),为了在函数执行完毕后,及时的释放资源,go的设计者提供defer(延时机制). 细节说明: 1:当go执行到一个 ...
- java 字符串转时间,时间转字符串
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); // 字符串转时间 Date d1= format ...
- MySQL 基础 -- MySQL 数据类型说明(数值类型、字符串类型、日期时间类型)、SQL通用语法和SQL分类
文章目录 1. 数据类型说明(数值类型.字符串类型.日期时间类型) 1.1数值类型 1.2 字符串类型 1.3 日期类型 1.4 数据类型练习:设计一张员工信息表 2. SQL通用语法和SQL分类 2 ...
最新文章
- mysql innodbuffer修改_mysql参数之innodb_buffer_pool_size大小设置
- 学python最好的方式-Python 学习怎样开始比较好?
- boost::convert模块实现lexical_cast的测试程序
- 在Kali上安装打印机
- java:自定义数据库连接池
- 利用curl验证ssl网站(webservice)
- 解决XShell连接时无法root用户登录问题【Linux】
- 文本检测大满贯!自适应文本区域表示改进形状任意的文本检测
- 张朝阳:Q4盈利远超预期 2021年期待产品爆发
- netstat查询端口被占用
- android job service,服务保活那些事(Job Service ,JobScheduler)
- grpc+nginx架构部署指导
- EChart:基础学习
- 软考网络工程师+计算机等级考试四级网络工程师--MAN标准LAN标准
- 线性代数-距离公式汇总
- 华为手机如何分享文件至电脑
- 【清华大学】操作系统 陈渝 Part4 ——物理内存管理 之 非连续内存分配
- 【Qt象棋游戏】05_象棋走棋规则——象、马、将、兵
- js 负数转换正_js 负数转换成正数的方法
- 耐得住寂寞,是一种境界和品味
热门文章
- SQL Server: 不同服务器之间的数据同步
- 用计算机打字打错了怎么办,笔记本键盘输入错误怎么办
- 简评骑士与凯尔特人交易对双方影响
- 想要学习网络安全,安全的论坛和资料如何找?
- STM32Mini基于SPI接口的0.96寸OLED屏数据显示
- springboot对controller方法进行单元测试
- 邮政社招笔试题库_历年中国邮政笔试精华试题及参考答案
- android+水滴粘性动画,Android水滴,小球粘性控件生成.
- 通过使用锥透镜对生成贝塞尔光束以优化焦斑大小和焦深
- ThreadPoolExecutor线程池原理