C 语言 strftime()和strptime()

2023-10-27

C 语言 将时间转换为字符串和字符串转换为时间格式

首先,要先知道C语言头文件time.h下的 struct tm结构体

struct tm {
   int tm_sec;         /* 秒,范围从 0 到 59        */
   int tm_min;         /* 分,范围从 0 到 59        */
   int tm_hour;        /* 小时,范围从 0 到 23        */
   int tm_mday;        /* 一月中的第几天,范围从 1 到 31    */
   int tm_mon;         /* 月,范围从 0 到 11        */
   int tm_year;        /* 自 1900 年起的年数        */
   int tm_wday;        /* 一周中的第几天,范围从 0 到 6    */
   int tm_yday;        /* 一年中的第几天,范围从 0 到 365    */
   int tm_isdst;       /* 夏令时                */
};

将时间转化为字符串:
size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr)
①其中str – 这是指向目标数组的指针,用来复制产生的 C 字符串。
②maxsize – 这是被复制到 str 的最大字符数。
③format – 这是 C 字符串,包含了普通字符和特殊格式说明符的任何组合。 这些格式说明符由函数替换为表示 tm 中所指定时间的相对应值。

#include<iostream>
#include<time.h>
#include<string.h>

using namespace std;

int mian()
{
	struct tm *info;

	//获取当前时间
	time_t curtime;
    time( &curtime );
    info = localtime( &curtime );
    char tmp[64];
    //将时间转换为字符串
    strftime(tmp, sizeof(tmp), "%Y-%m-%d %H:%M:%S",localtime( &curtime ));
    string time = tmp ; 
    cout << "当前时间:" << time << endl;

}

/*
%a 星期几的简写  
%A 星期几的全称  
%b 月分的简写  
%B 月份的全称  
%c 标准的日期的时间串  
%C 年份的后两位数字  
%d 十进制表示的每月的第几天  
%D 月/天/年  
%e 在两字符域中,十进制表示的每月的第几天  
%F 年-月-日  
%g 年份的后两位数字,使用基于周的年  
%G 年分,使用基于周的年  
%h 简写的月份名  
%H 24小时制的小时  
%I 12小时制的小时  
%j 十进制表示的每年的第几天  
%m 十进制表示的月份  
%M 十时制表示的分钟数  
%n 新行符  
%p 本地的AM或PM的等价显示  
%r 12小时的时间  
%R 显示小时和分钟:hh:mm  
%S 十进制的秒数  
%t 水平制表符  
%T 显示时分秒:hh:mm:ss  
%u 每周的第几天,星期一为第一天 (值从0到6,星期一为0)  
%U 第年的第几周,把星期日做为第一天(值从0到53)  
%V 每年的第几周,使用基于周的年  
%w 十进制表示的星期几(值从0到6,星期天为0)  
%W 每年的第几周,把星期一做为第一天(值从0到53)  
%x 标准的日期串  
%X 标准的时间串  
%y 不带世纪的十进制年份(值从0到99)  
%Y 带世纪部分的十进制年份  
%z,%Z 时区名称,如果不能得到时区名称则返回空字符。  
%% 百分号 
*/

将字符串转换为tm结构体:

#include<iostream>
#include<time.h>
#include<string.h>

using namespace std;

int mian()
{
	struct tm *info;

	//获取当前时间
	time_t curtime;
    time( &curtime );
    info = localtime( &curtime );
    char tmp[64];
    //将时间转换为字符串
    strftime(tmp, sizeof(tmp), "%Y-%m-%d %H:%M:%S",localtime( &curtime ));
    string time = tmp ; 
    cout << "当前时间:" << time << endl;


//-----------------------------------------------------------------
//将time转换回来
struct tm *mytm;
strptime(time.c_str(), %Y-%m-%d %H:%M:%S, mytm);


    cout<<"print mytm:"<<endl;

    cout<<"tm_min:"<<mytm.tm_min<<endl;
    cout<<"tm_hour:"<<mytm.tm_hour<<endl;
    cout<<"tm_mday:"<<mytm.tm_mday<<endl;
	return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C 语言 strftime()和strptime() 的相关文章

  • 使用 gcc 在 Linux 上运行线程构建块 (Intel TBB)

    我正在尝试为线程构建块构建一些测试 不幸的是 我无法配置 tbb 库 链接器找不到库 tbb 我尝试在 bin 目录中运行脚本 但这没有帮助 我什至尝试将库文件移动到 usr local lib 但这又失败了 任何的意见都将会有帮助 确定您
  • 在模板类中声明模板友元类时出现编译器错误

    我一直在尝试实现我自己的链表类以用于教学目的 我在迭代器声明中指定了 List 类作为友元 但它似乎无法编译 这些是我使用过的 3 个类的接口 Node h define null Node
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • 如何在 Cassandra 中存储无符号整数?

    我通过 Datastax 驱动程序在 Cassandra 中存储一些数据 并且需要存储无符号 16 位和 32 位整数 对于无符号 16 位整数 我可以轻松地将它们存储为有符号 32 位整数 并根据需要进行转换 然而 对于无符号 64 位整
  • 机器Epsilon精度差异

    我正在尝试计算 C 中双精度数和浮点数的机器 epsilon 值 作为学校作业的一部分 我在 Windows 7 64 位中使用 Cygwin 代码如下 include
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • 随着时间的推移,添加到 List 变得非常慢

    我正在解析一个大约有 1000 行的 html 表 我从一个字符串中添加 10 个字符串 td 每行到一个list td
  • 为什么 GCC 不允许我创建“内联静态 std::stringstream”?

    我将直接前往 MCVE include
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • 如何在 Linq to SQL 中使用distinct 和 group by

    我正在尝试将以下 sql 转换为 Linq 2 SQL select groupId count distinct userId from processroundissueinstance group by groupId 这是我的代码
  • 有没有办法让 doxygen 自动处理未记录的 C 代码?

    通常它会忽略未记录的 C 文件 但我想测试 Callgraph 功能 例如 您知道在不更改 C 文件的情况下解决此问题的方法吗 设置变量EXTRACT ALL YES在你的 Doxyfile 中
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • C++ 继承的内存布局

    如果我有两个类 一个类继承另一个类 并且子类仅包含函数 那么这两个类的内存布局是否相同 e g class Base int a b c class Derived public Base only functions 我读过编译器无法对数
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat

随机推荐

  • 2023年电赛---运动目标控制与自动追踪系统(E题)OpenART mini的代码移植到OpenMV

    如果有嵌入式企业需要招聘校园大使 湖南区域的日常实习 任何区域的暑假Linux驱动实习岗位 可C站直接私聊 或者邮件 zhangyixu02 gmail com 此消息至2025年1月1日前均有效 前言 1 已经有不少同学根据我上一篇博客完
  • 【Git】(二)分支

    1 创建分支 已存在主分支master 现在需要创建v1 0的版本 一般直接在web页面操作 v1 0分支 基线master 称为项目分支 假如 v1 0项目存在两个项目成员sunriver2000和snow 一般还会再针对个人创建个人分支
  • J2EE&通用分页02

    目录 一 重构 提取公用方法 1 为了进行公共方法的抽取 需要找出上面实习中的可通用部分 和差异化部分 2 公用方法封装思路 3 具体实现 二 分页标签 2 1 准备一个Servlet 3 2 结果展示页面 三 过滤器解决中文乱码问题 四
  • 董事长、总裁和CEO--浅谈公司领导者的称谓与实质

    自从信息产业兴起以来 尤其是网络股泡沫产生以来 CEO 在中国骤然成为一个流行词汇 总经理和总裁们纷纷改称CEO 这个缩写词比它的中译版 首席执行官 更简洁 在中国人心目中更有神圣感 于是便出现了今天CEO满天飞的局面 刚刚从大学毕业的年轻
  • MySQL视图

    一 视图 介绍及基本语法 视图 View 是一种虚拟存在的表 视图中的数据并不在数据库中实际存在 行和列数据来自定义视图的查询中使用的表 并且是在使用视图时动态生成的 通俗的讲 视图只保存了查询的SQL逻辑 不保存查询结果 所以我们在创建视
  • VUE移动端使用overflow-auto滚动条坑

    解决 滚动条 滑动 一次就一直出现在底部问题 在关闭模态框之前 操作原生dom var box document querySelector div box scrollTop 0 设置 滚动条的 位置 为 0 这样 每次重新打开另一条数据
  • 新版husky8.0配合commitlint,规范我们的git的提交记录

    文章目录 安装 配置 第一步 初始化husky 第二步 添加git提交的hook 第三步 在项目根目录新建配置文件 commitlint config js 验证一下 附1 git commit完整的规范 附2 commitlint con
  • C+复习Parameter Passing

    double average double a double b call by value void swap double a double b call by reference in C 11 this is more techni
  • 在Ubuntu环境下用gcc命令运行c程序以及Makefile编译

    在Ubuntu环境下用gcc命令运行c程序以及Makefile编译 用gcc命令编译c语言 用VC 6 0编译C语言 用Makefile编译C语言 用gcc命令编译c语言 主程序main1 c include
  • C51 数码管的动态显示 dynamic display method of digital tube

    代码 include
  • Java代码实现使用while循环接受键盘的输入,如果输入的exit就退出,否则提示用户继续输入

    import java util Scanner 需求 编写代码按照要求实现以下的功能 使用while循环接受键盘的输入 如果输入的exit就退出 否则提示用户继续输入 要点提取 用while true 控制循环输入 用break跳出循环
  • html 基本标签

    1标题标签 h1 h6 h1 这是一段文字 h1 2 段落标签 p p 自动换行 p 这是一段文字 p 3 换行标签和水平线标签 br hr 4 图像标签 img src 图片路径 用于定义html页面的图像 img src img img
  • spss数据预处理步骤_数据处理之剔除无效问卷

    我们都知道在数据分析前 首先需要对数据进行预处理 检查数据中是否含有存在无效样本 异常值等 如果同一样本中存在大量漏填数据或相似答案过多的情况这样的样本都应该算作无效样本来处理 无效样本的常见使用场景 问卷研究中乱填问卷的样本 数据库下载的
  • 动态负荷对电力系统摆幅曲线的影响研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 摆动曲线仿真是评估扰动后电力系统稳定性的重
  • Selenium成长之路-19alert/prompt/confirm弹框处理

    webdriver 中处理 JavaScript 所生成的 alert confirm 以及 prompt 是很简单的 具体思路是使用 switch to alert 方法定位到 alert confirm prompt 然后使用 text
  • 哪些行业需要连接云专线?

    在诸多行业之中 有一些行业对数据安全性要求高 业务需要实时性 业务需求复杂 往往需要建立起私密 高速 安全的传输通道 云专线是他们经常采用的方案 具体来讲 都有哪些行业需要连接云专线呢 请见下方 1 金融行业 金融行业需要进行大量的数据传输
  • 前端绘图方式Canvas和SVG的区别

    Canvas和SVG是html5中支持2种可视化技术 都是可以在画布上绘制图形和放入图片 下面来介绍和分析一下他们 一 Canvas 和 SVG 简介 1 什么是Canvas Canvas 是H5新出来的标签
  • typora快捷键大全

    typora快捷键大全 一 菜单栏 文件 alt F 编辑 alt E 段落 alt P 格式 alt O 视图 alt V 主题 alt T 帮助 alt H 二 文件 新建 Ctrl N 新建窗口 Ctrl Shift N 打开 Ctr
  • order by、sort by、distribute by和cluster by 的区别,使用场景

    在Hive中 order by sort by distribute by和cluster by是用于数据排序和分区的关键字 它们在语义和使用场景上有一些区别 1 order by order by关键字用于对查询结果进行全局排序 它会将所
  • C 语言 strftime()和strptime()

    C 语言 将时间转换为字符串和字符串转换为时间格式 首先 要先知道C语言头文件time h下的 struct tm结构体 struct tm int tm sec 秒 范围从 0 到 59 int tm min 分 范围从 0 到 59 i