【笔记】strftime的使用方法-程序员宅基地

技术标签: 笔记  c语言  

strftime

strftime是C语言标准库中用来格式化输出时间的的函数。下面是strftime的用法

各参数意义

在这里插入图片描述

代码使用示例

#include<stdio.h>
#include<time.h>

#define print(s1, s2,s3) \
  printf("%-20s%-30s%s\n",s1, s2,s3);

int main()
{
    
  time_t rawtime;
  struct tm* timeinfo;
  char timE[80];
  /* time(&rawtime); */
  rawtime = 31507200;
  timeinfo=localtime(&rawtime);
  strftime(timE,80,"%F %X",timeinfo);
  printf("时间为:%s\n",timE);
  print( "格式控制符", "输出结果", "格式控制说明" );
  strftime(timE,80,"%Y",timeinfo);
  print( "%Y", timE,"年" );

  strftime(timE,80,"%m",timeinfo);
  print( "%m", timE,"月" );

  strftime(timE,80,"%d",timeinfo);
  print( "%d", timE,"日" );

  strftime(timE,80,"%H",timeinfo);
  print( "%H", timE,"时" );

  strftime(timE,80,"%M",timeinfo);
  print( "%M", timE,"分" );

  strftime(timE,80,"%S",timeinfo);
  print( "%S", timE,"秒" );

  strftime(timE,80,"%a",timeinfo);
  print( "%a", timE,"根据当前区域设置,一周中某一天的缩写名称" );

  strftime(timE,80,"%A",timeinfo);
  print( "%A", timE,"根据当前区域设置显示一周中某一天的全名" );

  strftime(timE,80,"%b",timeinfo);
  print( "%b", timE,"根据当前区域设置的缩写月份名称" );

  strftime(timE,80,"%B",timeinfo);
  print( "%B", timE,"根据当前区域设置的完整月份名称" );

  strftime(timE,80,"%c",timeinfo);
  print( "%c", timE,"当前区域设置的首选日期和时间表示形式" );

  strftime(timE,80,"%C",timeinfo);
  print( "%C", timE,"世纪数(年/100)为2位整数" );

  strftime(timE,80,"%d",timeinfo);
  print( "%d", timE,"以十进制数字表示的月份的日期(范围为01到31)。" );

  strftime(timE,80,"%D",timeinfo);
  print( "%D", timE,"相当于%m/%D/%y。" );
  print( "", "","(Yecch仅适用于美国人。美国人应注意,在其他国家%d/%m/%y相当普遍。" );
  print( "", "","这意味着在国际背景下,这种格式是模糊的,不应使用。)" );

  strftime(timE,80,"%e",timeinfo);
  print( "%e", timE,"与%d类似,是一个十进制数字,但前导零被空格替换。" );

  /* strftime(timE,80,"%E",timeinfo); */
  /* print( "%E", timE,"与%d类似,是一个十进制数字,但前导零被空格替换。" ); */

  strftime(timE,80,"%F",timeinfo);
  print( "%F", timE, "相当于%Y-%m-%d(ISO 8601日期格式)。(C99)使用" );

  strftime(timE,80,"%G",timeinfo);
  print( "%G", timE, "ISO 8601基于周的年份(见注释),世纪为小数。" );
  print( "", "", "与ISO周数对应的4位年份(见%V)。它的格式和值与%Y相同,只是如果ISO周数属于上一年或下一年,则使用该年。" );
  print( "", "", "(TZ)(根据tm年、tm日和tm日计算)" );

  strftime(timE,80,"%g",timeinfo);
  print( "%g", timE, "类似于%G,但没有世纪,也就是说,有两位数的年份(00–99)。(TZ)(根据tm年、tm日和tm日计算)" );

  strftime(timE,80,"%h",timeinfo);
  print( "%h", timE, "相当于%b。" );

  strftime(timE,80,"%H",timeinfo);
  print( "%H", timE, "使用24小时时钟(范围为00到23)将小时表示为十进制数字。" );

  strftime(timE,80,"%I",timeinfo);
  print( "%I", timE, "使用12小时时钟(范围01至12)将小时作为十进制数字。" );

  strftime(timE,80,"%j",timeinfo);
  print( "%j", timE, "以十进制数字表示的一年中的某一天(范围001至366)。" );

  strftime(timE,80,"%k",timeinfo);
  print( "%k", timE, "小时(24小时时钟)为十进制数(范围0至23);单个数字前面有一个空格。" );

  strftime(timE,80,"%I",timeinfo);
  print( "%I", timE, "小时(12小时时钟)为十进制数字(范围1至12);单个数字前面有一个空格。(另见%I.)" );

  strftime(timE,80,"%m",timeinfo);
  print( "%m", timE, "以十进制数字表示月份(范围为01到12)。" );

  strftime(timE,80,"%M",timeinfo);
  print( "%M", timE, "以十进制数字表示的分钟(范围为00到59)。" );

  /* strftime(timE,80,"%O",timeinfo); */
  /* print( "%O", timE, "修改器:使用替代格式,见下文。" ); */

  strftime(timE,80,"%p",timeinfo);
  print( "%p", timE, "根据给定的时间值选择“AM”或“PM”,或当前区域设置的对应字符串。" );

  strftime(timE,80,"%P",timeinfo);
  print( "%P", timE, "类似于%P,但小写:“am”或“pm”或相应的字符串对于当前区域设置。" );

  strftime(timE,80,"%r",timeinfo);
  print( "%r", timE, "以a.m.或p.m.符号表示的时间。在POSIX语言环境中,这是相当于%I:%M:%S%p。" );

  strftime(timE,80,"%R",timeinfo);
  print( "%R", timE, "以24小时表示的时间(%H:%M)。(SU)一个版本包括秒数,请参见下面的%T。" );

  strftime(timE,80,"%s",timeinfo);
  print( "%s", timE, "是从纪元开始的秒数,1970-01-01 00:00:00+0000(UTC)。(TZ)(根据mktime(tm)计算)" );

  strftime(timE,80,"%S",timeinfo);
  print( "%S", timE, "为十进制数(范围为00到60)。(范围为最多60秒,以允许偶尔的闰秒。)(计算来自tm_sec.)" );

  strftime(timE,80,"%T",timeinfo);
  print( "%T", timE, "以24小时表示的时间(%H:%M:%S)。" );

  strftime(timE,80,"%u",timeinfo);
  print( "%u", timE, "一周中的某一天为十进制,范围为1到7,星期一为1。另见%w。" );

  strftime(timE,80,"%U",timeinfo);
  print( "%U", timE, "当前年份的周数为十进制数,范围为00至53,从第一个星期日开始,为第一周。另请参见%V和%W(根据tm_yday和星期四)" );

  strftime(timE,80,"%V",timeinfo);
  print( "%V", timE, "本年度的ISO 8601周数(见注释)作为十进制数,范围为01到53,其中第1周为第一周新年至少有4天。" );

  strftime(timE,80,"%w",timeinfo);
  print( "%w", timE, "一周中的某一天为十进制,范围为0到6,星期日为0。 另见%u。" );

  strftime(timE,80,"%k",timeinfo);
  print( "%W", timE, "当前年份的周数为十进制数,范围为00至53,从第一个星期一开始为第一周。" );

  strftime(timE,80,"%x",timeinfo);
  print( "%x", timE, "当前区域设置的首选日期表示形式,不带时间。" );

  strftime(timE,80,"%X",timeinfo);
  print( "%X", timE, "当前l的首选时间表示形式" );

  char YYYYmmdd[9] = {
    0};
  char HHMMSS[10] = {
    0};

  strftime(YYYYmmdd,sizeof(YYYYmmdd),"%Y%m%d",timeinfo);
  strftime(HHMMSS,sizeof(HHMMSS),"%H-%M-%S",timeinfo);

  return 0;
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/cooper1024/article/details/122217078

智能推荐

Android 开发的现状及发展前景_android现状-程序员宅基地

文章浏览阅读8.8k次,点赞3次,收藏31次。在几年前的时候,曾听过很多人说 Android 学习很简单,做个App就上手了,工作机会多,毕业后也比较容易找工作。这种观点可能是很多Android开发者最开始入行的原因之一。在工作初期,工作主要是按照业务需求实现App页面的功能,按照设计师的设计稿实现页面的效果。在实现的过程中,总是会被提如下的需求:这个字能不能大点或者醒目点儿?感觉颜色和设计稿有差别,能不能再调调?怎么老是崩溃啊,行不行啊?…所以,工作过一、两年后你会发现,自己每天重复工作内容就是将找各种各样的组件、框架,拖拖拽拽,改_android现状

php获取当月天数及当月第一天及最后一天、上月第一天及最后一天实现方法_php 判断是否月最后一天取上月月份-程序员宅基地

文章浏览阅读274次。在做查询过程中,例如要实现查上个月从第一天到最后一天的佣金(提成),那我们在程序实现过程中就要让程序在上个月的范围内查询,第一天是比较好办,但最后一天就不定,要去写段函数进行月份及年份判断来得出上个月共有多少天.那就比麻烦,还有获取当前月份,当前年份等常规日期获取函数,以下代码都是经过本公司工程师测试后的正确代码,可以放心使用. 1.获取上个月第一天及最后一天. echo date('_php 判断是否月最后一天取上月月份

.xsa文件生成-程序员宅基地

文章浏览阅读6.2k次。.xsa文件的生成Vivado工程建立你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。1.我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全新的写作体验;在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;增加_.xsa

初识HtmlParser.Net-程序员宅基地

文章浏览阅读475次。一、HTMLParser.net是什么?HTMLParser.net是HtmlParser的JAVA版本的dot net版本。二、HTMLParser可以用来做什么?HtmlParser是用来改造或者提取HTML,通过HtmlParser可以高速,快捷的从Html页面中分离出你想要的内容。三、HTMLParser的核心模块是org.htmlparser.Parser类,这个类实际完成了对于HTML_htmlparser.net

模拟神器之QEMU-程序员宅基地

文章浏览阅读1.3w次,点赞6次,收藏48次。1. 简介QEMU(quick emulator)是一款由法布里斯·贝拉(Fabrice Bellard)等人编写的免费的可执行硬件虚拟化的(hardware virtualization)开源托管虚拟机(VMM)。QEMU 是一个托管的虚拟机镜像,它通过动态的二进制转换,模拟CPU,并且提供一组设备模型,使它能够运行多种未修改的客户机OS,可以通过与KVM一起使用进而接近本地速度运行虚拟机(接近真实电脑的速度)。QEMU还可以为user-level的进程执行CPU仿真,进而允许了为一种架构编译的程序_qemu

【最详细|附源码】Visual C++(VC)6.0最新安装教程_visual c++安装教程-程序员宅基地

文章浏览阅读1.4w次,点赞14次,收藏78次。软件:Visual C++版本:6.0语言:简体中文大小:34.26M安装环境:Win11/Win10/Win8/Win7硬件要求:[email protected] 内存@4G(或更高)下载通道①百度网盘丨下载链接:提取码:dg2n[更多软件]:点击进入管家「软件目录」!_visual c++安装教程

随便推点

Dyninst学习笔记-程序员宅基地

文章浏览阅读7.6k次,点赞2次,收藏9次。Instrumentation是一种直接修改程序二进制文件的方法。其可以用于程序的调试,优化,安全等等。对这个词一般的翻译是“插桩”,但这更多使用于软件测试领域。【找一些相关的例子】Dyninst可以动态或静态的修改程序的二进制代码。动态修改是在目标进程运行时插入代码(dynamic binary instrumentation)。静态修改则是直接向二进制文件插入代码(static b_dyninst

在服务器上部署asp网站,部署asp网站到云服务器-程序员宅基地

文章浏览阅读2.9k次。部署asp网站到云服务器 内容精选换一换通常情况下,需要结合客户的实际业务环境和具体需求进行业务改造评估,建议您进行服务咨询。这里仅描述一些通用的策略供您参考,主要分如下几方面进行考虑:业务迁移不管您的业务是否已经上线华为云,业务迁移的策略是一致的。建议您将时延敏感型,有快速批量就近部署需求的业务迁移至IEC;保留数据量大,且需要长期稳定运行的业务在中心云上。迁移方法请参见如何计算隔离独享计算资源..._nas asp网站

android开发之bitmap转数组的方法-程序员宅基地

文章浏览阅读4.7k次。/** 方法一 * 将bitmap转为数组的方法 * * @param bitmap 图片 * @return 返回数组 */ public byte[] getBytesByBitmap(Bitmap bitmap) { ByteBuffer buffer = ByteBuffer.allocate(bitmap.ge..._bitmap转数组

IDEA修改SVN地址-程序员宅基地

文章浏览阅读6.6k次,点赞2次,收藏6次。IDEA修改SVN地址 SVN地址改变了,在IDEA上的项目地址还没有修改 第一步:选中项目,右键Subversion --> Relocate第二步:From URL路径保持不变(修改To URL为最新路径)第三步:选中项目,右键Subversion --> Update Directory第四步:勾选Update修改URL为最新的即可SVN地址改变了,在IDEA上的项目地址还没有修改_idea修改svn地址

欧拉图和哈密顿图_哈密顿通路度为偶数-程序员宅基地

文章浏览阅读3.8k次。欧拉图及欧拉路径欧拉图 如果图G上有一条经过所有顶点、所有边的闭路径(边不重复,顶点可以重复)充分必要条件 无向图:G连通,所有顶点的度都是偶数有向图:G弱连通,每个顶点出度与入度相等欧拉路径 如果图G上有一条经过所有顶点、所有边的路径(边不重复,顶点可以重复)充分必要条件 无向图:G连通,恰有两个顶点的度是奇数有向图:G连通,恰有两个顶点的出度与入度不相等,其中一个出度比入度多_哈密顿通路度为偶数

Linux下SVN安装配置和使用中遇到的问题-程序员宅基地

文章浏览阅读68次。两个命令:svn info :显示版本库信息,svn的下载url等。svn co https://xxxxx/xxx wodemulu (通过我的目录制定co的文件夹)svn st:显示修改的文件。=-=========================================第一章 安装1. 采用源文件编译安装。源文件共两个(可下载完传入linux),为:s..._can't lunch modelsim make sure

推荐文章

热门文章

相关标签