时间函数之间的关系

struct tm
{
int tm_sec; // 代表目前秒数,正常范围0-59,但允许至61秒;
int tm_min; // 代表目前分数,范围为0-59。
int tm_hour; // 从午夜算起的小时数,范围为0-23。
int tm_mday; // 目前月份的日数,范围为1-31。
int tm_mon; // 代表目前月份,从一月算起,范围为0-11。
int tm_year; // 从1900年算起至今的年数。比如(时间戳1970-01-02 10:23:09,该值为70)。
int tm_wday; // 一星期中的日数,从星期日算起,范围为0-6。
int tm_yday; // 从1月1日算起至今的天数,范围为:0-365。
int tm_isdst; // 日光节约时间的旗标。
};
#include <time.h>
time_t time(time_t * t);

此函数会返回从公元1970年1月1日的UTC时间从0时0分0秒算起到现在所经过的秒数。如果t并非空指针的话,此函数也会将返回值存到t指针所指的内存。如果失败则返回((time_t)-1)。 #include <time.h>
struct tm * gmtime(const time_t * timep);

该函数将参数timep所指的time_t结构中的信息转换成真实世界所使用的日期表示方法,然后将结果由结构tm返回。该返回值代表目前的UTC时间。 #include <time.h>
struct tm * localtime(const time_t * timep);

该函数将参数timep所指的time_t结构中的信息转换成真实世界所使用的日期表示方法,然后将结果由结构tm返回。该返回值代表目前的当地时区的当地时间。 #include <time.h>
time_t mktime(struct tm * timeptr);

该函数将参数timeptr所指的tm结构数据转换成从公元1970年1月1日0时0分0秒算起的至今的UTC时间所经过的秒数。 #include <time.h>
size_t strftime(char *s, size_t max, const char *format, const struct tm *tm);

该函数将参数tm,依照参数format所指定的字符串格式做转换,转换后的字符串复制到参数s所指的字符串数组中,该字符串的最大长度为参数max所控制。 #include <time.h>
char *strptime(const char *s, const char *format, struct tm *tm);

该函数将参数s所指定的按一定格式要求编制的字符串,根据格式化参数format,转换成tm结构的值。如果分析错误,返回NULL。
strftime和strptime的格式参数
参数 含义
%a 星期几的简写
%A 星期几的全称
%A 星期几的全称
%b 月分的简写
%B 月份的全称
%c 标准的日期的时间串
%C 年份的前两位数字,比如1997年表示为:19
%d 十进制表示的每月的第几天,表示法为:01-31
%D 格式为“月/天/年”表示时间。相当于“%m%d%y”格式。例如“19970701”
%e 十进制表示的每月的第几天(不补0),表示法为:1-31。
%F 使用“%Y-%m-%d”格式表示日期。例如“1997-07-01”。
%g 年份的后两位数字,比如1997年表示为:97
%G 完整的公元年份表示,比如1997年表示:1997
%h 同“%b”一样,简写的月份名。
%H 以24小时制表示小时数(00-23)。
%I 以12小时制表示小时数(01-12)。
%j 十进制表示一年中的天数(001-366)。
%k 同“%H”,表示法为:0-23
%l 同“%I”,表示法为:1-12。
%m 十进制表示的月份,表示法:01-12。
%M 十时制表示的分钟数,表示法:00-59。
%n 同“\n”,换行。
%p 本地AM或PM的等价显示。
%P 同“%p”相似,但使用小写的am和pm来表示。
%r 相当于使用“%I:%M:%S %p”格式,例如:“08:31:50 PM”。
%R 相当于使用“%H:%M”格式,例如:“22:31”。
%S 十进制的秒数,表示法:00-59。
%t 水平制表符,同“\t”
%T 24小时时间表示,相当于“%H:%M:%S”格式。
%u 一星期中的星期日期,范围:1-7,星期一从1开始。
%U 一年中的星期数,范围:00-53,一月第一个星期日开始为01。
%V 一年中的星期数,范围:00-53,一月第一个星期一开始为01。
%w 一星期中的星期日期,范围:0-6,星期日从0开始。
%W 一年中的星期数,范围:00-53,一月第一个星期一开始为01。
%x 标准的日期串。比如2017年1月2日,表示成:"01/02/17"。
%X 标准的时间串。比如2017年1月2日10点23分9秒,表示成:“10:23:09”。
%y 不带世纪的十进制年份(值从0到99)
%Y 带世纪部分的十制年份
%z,%Z 时区名称,如果不能得到时区名称则返回空字符。
%% 百分号

关于%U参数:
比如2017年的1月1日是星期日,使用%U得到的值是“01”
比如2016年的1月1日是星期五,使用%U得到的值是“00”

关于%V参数:
比如2017年的1月1日是星期日,使用%V得到的值是“52”
比如2017年的1月1日是星期一,使用%V得到的值是“01”
比如2016年的1月1日是星期五,使用%V得到的值是“53”

更新记录

1.20170720 更新时间函数关系图;

c&c++ datetime的更多相关文章

  1. C# DateTime与时间戳转换

    C# DateTime与时间戳的相互转换,包括JavaScript时间戳和Unix的时间戳. 1. 什么是时间戳 首先要清楚JavaScript与Unix的时间戳的区别: JavaScript时间戳: ...

  2. C# DateTime日期格式化

    在C#中DateTime是一个包含日期.时间的类型,此类型通过ToString()转换为字符串时,可根据传入给Tostring()的参数转换为多种字符串格式. 目录 1. 分类 2. 制式类型 3. ...

  3. 在面试中忽然发现DateTime的一些...

    今天说说我面试中碰到的一个小问题,在我问起DateTime为什么无法赋值NULL值,一般第一反应都认为它是值类型,不是引用类型,但随后我查阅了度娘自我学习到它是结构类型,那么随之而然就无法赋值NULL ...

  4. LINQ to SQL语句(14)之Null语义和DateTime

    Null语义 说明:下面第一个例子说明查询ReportsToEmployee为null的雇员.第二个例子使用Nullable<T>.HasValue查询雇员,其结果与第一个例子相同.在第三 ...

  5. .NET DateTime类型变量作为参数时设置默认值

    一个小的 Tips. .NET 中函数参数的默认值需要是编译时常量.如果参数是引用类型,可以设置Null,如果是值类型,可以设置相应的编译时常量,如整型可以用整数,但对于DateTime(结构体,值类 ...

  6. BCS datetime 时间区间问题

    BCS 整合sql表时发现以下问题: datetime字段在列表中带了时区,比如插入12-6号的数据,在sql中显示的是12-5 date类型字段无法正确识别,插入成功但报错 LobSystem (外 ...

  7. C#中DateTime.Ticks属性及Unix时间戳转换

    1.相关概念 DateTime.Ticks:表示0001 年 1 月 1 日午夜 12:00:00 以来所经历的 100 纳秒数,即Ticks的属性为100纳秒(1Ticks = 0.0001毫秒). ...

  8. WPF 自定义DateControl DateTime控件

    自定义日期控件,月份选择.如下是日期的一些效果图. 具体的样式.颜色可以根据下面的代码,自己调节即可    1.日期控件的界面 <UserControl x:Class="WpfApp ...

  9. JavaScript 解析 Django Python 生成的 datetime 数据 时区问题解决

    JavaScript 解析 Django/Python 生成的 datetime 数据 当Web后台使用Django时,后台生成的时间数据类型就是Python类型的. 项目需要将几个时间存储到数据库中 ...

  10. python标准模块(time、datetime及hashlib模块)

    一.time,datetime模块 时间相关的操作 import time time.sleep(5) # ==> 停顿多少秒 print(time.time()) # ==> 返回时间戳 ...

随机推荐

  1. shell printf命令:格式化输出语句

    printf 命令用于格式化输出, 是echo命令的增强版.它是C语言printf()库函数的一个有限的变形,并且在语法上有些不同. 注意:printf 由 POSIX 标准所定义,移植性要比 ech ...

  2. Can't bind multiple parameters ('header' and 'parameters') to the request's content.

    2019-01-23 15:46:29.012+08:00 ERROR [6]: System.InvalidOperationException: Can't bind multiple param ...

  3. [转载]织梦DEDE多选项筛选_联动筛选功能的实现_二次开发

    织梦默认的列表页没有筛选功能,但有时候我们做产品列表页的时候,产品的字段比较多,很多人都需要用到筛选功能,这样可以让用户更方便的找到自己所需要的东西,实现这个联动筛选功能需要对织梦进行二次开发,下面就 ...

  4. hibernate配置文件的详解

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE hibernate-configurati ...

  5. Flume-NG中的Channel与Transaction关系(原创)

    在sink和source中(不管是内置还是自定义的),基本都有如下代码,这些代码在sink中的process方法中,而在source中自己不需要去写,在source中getChannelProcess ...

  6. 需要记忆的几个sql语句

    链接查询: 1.查询两个表,在where中定义连接条件: select student.sno,sname,ssex,sage,sdept,cno,grade. from student,sc whe ...

  7. spring3: 4.4 使用路径通配符加载Resource

    4.4.1  使用路径通配符加载Resource 前面介绍的资源路径都是非常简单的一个路径匹配一个资源,Spring还提供了一种更强大的Ant模式通配符匹配,从能一个路径匹配一批资源. Ant路径通配 ...

  8. 解决:actual_tessdata_num_entries_ <= TESSDATA_NUM_ENTRIES:Error:Assert failed:in file ..\..\ccutil\tessdatamanager.cp p, line 50

    在玩tesseract时,发现如下报错: 这个是因为Tesseract-OCR的版本和chi_sim.traindata字库版本不匹配,由于我的Tesseract-OCR是3.02.02,去googl ...

  9. 【spark】示例:求极值

    我们有这样的数据 1.建立SparkContext读取数据 (1)建立sc (2)通过sc.textFile()读取数据创建Rdd 2.过滤数据 通过filter(line => line.tr ...

  10. Tomcat和Servlet

    Tomcat Tomcat是什么,Tomcat是目前市场上主流Web服务器之一,是用Java语言开发的项目.Tomcat支持Servlet和JSP的规范,它由一组嵌套的层次和组件组成.结构如下图 所有 ...