时间函数之间的关系

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. 2018-2019-2 20165114《网络对抗技术》Exp3 免杀原理与实践

    Exp3 免杀原理与实践 目录 一.实验内容 二.基础问题回答 (1)杀软是如何检测出恶意代码的? (2)免杀是做什么? (3)免杀的基本方法有哪些? 三.实践过程记录 正确使用msf编码器,msfv ...

  2. java:java静态代理与动态代理简单分析

    java静态代理与动态代理简单分析 转载自:http://www.cnblogs.com/V1haoge/p/5860749.html 1.动态代理(Dynamic Proxy) 代理分为静态代理和动 ...

  3. 配置iptables实现本地端口转发的方法详解

    场景假如你在用 resin 调试一个 Web 程序,需要频繁地重启 resin.这个 Web 程序需要开在 80 端口上,而 Linux 限制 1024 以下的端口必须有 root 权限才能开启.但是 ...

  4. USACO 简易题解(蒟蒻的题解)

    蒟蒻难得可以去比赛,GDOI也快到了,还是认真刷题(不会告诉你之前都在颓废),KPM 神犇既然都推荐刷USACO, 辣就刷刷. 现在蒟蒻还没刷完,太蒟刷得太慢,so 写了的搞个简易题解(没代码,反正N ...

  5. C++中虚函数和纯虚函数的区别与总结

    首先:强调一个概念 定义一个函数为虚函数,不代表函数为不被实现的函数. 定义他为虚函数是为了允许用基类的指针来调用子类的这个函数. 定义一个函数为纯虚函数,才代表函数没有被实现. 定义纯虚函数是为了实 ...

  6. SQLyog常用快捷键 - 转载

    SQLyog常用快捷键 1. SQL格式化 F12 格式化当前行所在的SQL Ctrl+F12    格式化选中的SQL 2. 窗口操作 Ctrl+T 打开一个新的查询窗口 Alt+L         ...

  7. JNI_Z_10_Java的数组

    在Java中数组分为两种: (1).基本类型数组 (2).对象类型(Object[])的数组 (数组中存放的是指向Java对象中的引用) 一个能通用于两种不同类型数组的函数: GetArrayLeng ...

  8. Linux平台上DPDK入门指南

    1. 简介 本文档包含DPDK软件安装和配置的相关说明.旨在帮助用户快速启动和运行软件.文档主要描述了在Linux环境下编译和 运行DPDK应用程序,但是文档并不深入DPDK的具体实现细节. 1.1. ...

  9. SQL命令查询Oracle存储过程信息(代码内容等)

    SELECT * FROM ALL_SOURCE  where TYPE='PROCEDURE'  AND TEXT LIKE '%0997500%'; --查询ALL_SOURCE中,(脚本代码)内 ...

  10. WPF Invoke和BeginInvoke

    在WPF中Invoke和BeginInvoke和Winform中的是差不多的,只是一个用Control的一个用Dispatcher的. 而Invoke和BeginInvoke的区别嘛 就是一个是同步的 ...