时间函数之间的关系

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. C语言中 ln(以自然对数e为底) lg(以十为底) 以及logab(以a为底,b为真数)的相关知识

    总所周知,我们在高中学过对数函数,记作y=logax.下面是百度百科关于对数函数的描述: 对数的定义:一般地,如果ax=N(a>0,且a≠1),那么数x叫做以a为底N的对数,记作x=logaN, ...

  2. NOIP 数字游戏

    描述 丁丁最近沉迷于一个数字游戏之中.这个游戏看似简单,但丁丁在研究了许多天之后却发觉原来在简单的规则下想要赢得这个游戏并不那么容易.游戏是这样的,在你面前有一圈整数(一共n个),你要按顺序将其分为m ...

  3. javascript-实现简单瀑布流

    直接上代码: <style> *{ margin:0; padding:0; } .waterfall_item{ border:solid 3px #ccc; box-shadow:1p ...

  4. JavaEE之注解

    1注解:Annotation注解,是一种代码级别的说明.它是JDK1.5及以后版本引入的一个特性,与类.接口.枚举是在同一个层次,给计算机,JVM提供解读信息的. 2注解的作用:编译检查:代码分析,编 ...

  5. jquery中ajax回调函数使用this

    今天在写ajax请求的的时候success中代码老是不能正常执行,找了半天的原因,代码如下: 1 $.ajax({type: 'GET', 2 url: url, 3 data: oData, 4 s ...

  6. spark学习10(win下利用Intellij IDEA搭建spark开发环境)

    第一步:启动IntelliJ IDEA,选择Create New Project,然后选择Scala,点击下一步,输入项目名称wujiadong.spark继续下一步 第二步:导入spark-asse ...

  7. 自己用java实现飞鸽传书 1 - 实现socket通信

    第一步: 建立服务端客户端,实现端到端通信.因为要传递文件,信号量较大,故使用TCP/IP协议. 服务端和客户端都要建立socket,而后通过socket进行通信.目前只实现服务端到客户端的单向通信. ...

  8. svn官方版本的使用

    创建仓库的命令是:svndadmin create c:\abcde 启动命令是:svnserve -d -r c:\abcde 官方版本,svn路径

  9. matlab 学习笔记

    脚本名称不能与matlab里面的关键字一样.否则会报当MATLAB中报错,“SCRIPT ******”怎么解决 保留已画图形:hold on 矩阵连接:横向 f=[m,n];   纵向 f=[m;n ...

  10. TCP粘包处理 参考spserver

    TCP粘包出现的原因就不在详细描述了.TCP粘包是在做TCP编程时经常会遇到的问题,网上相关的参考也不少,大都都是一个热心人士编写的, 若仅用于学习就算了,若用真正用于项目还有待考虑. 本文就简述一下 ...