一直都是以简单的time_t t,time(&t),ctime(&t)来表示时间,后来要以时间为日志文件的名字时,就有点蒙逼了。学习一下。
 
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代表一月) - 取值区间为[0,11] */
 
     int tm_year; /* 年份,其值等于实际年份减去1900 */
 
     int tm_wday; /* 星期 – 取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推 */
 
     int tm_yday; /* 从每年的1月1日开始的天数 – 取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推 */
 
     int tm_isdst; /* 夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。*/
获取当地时间的函数 :struct tm *localtime(const time_t * timep); 获得格林威治时间的函数:struct tm *gmtime(const time_t *timep);,两个函数的用法是一样的,以localtime为例子说明
#include <time.h>
int main()
{
    char *wday[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
    time_t timep;
    struct tm *p;
    time(&timep);
    p = localtime(&timep); //取得当地时间
    printf ("%d/%d/%d ", (1900+p->tm_year), (l+p->tm_mon), p->tm_mday);
    printf("%s%d:%d:%d\n", wday[p->tm_wday], p->tm_hour, p->tm_min, p->tm_sec);
}
执行结果
2016/06/3 Fri 21:25:34
 
也有转换成标准格式的函数size_t strftime(char *strDest, size_t maxsize, const char *format, const struct tm *timeptr)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
 
int main(int argc, char **argv)
 {
     time_t t;
     struct tm *lt;
     char nowtime[24];
 
     t = time(NULL);
     lt = localtime(&t);
 
     memset(nowtime, 0, sizeof(nowtime));
     strftime(nowtime, sizeof(nowtime), "%Y-%m-%d %H:%M:%S", lt);
     printf("nowtime = %s\n", nowtime);
     return 0;
 }
输出 nowtime = 2016-6-3 21:23:07
可选择的格式有
%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 每周的第几天,星期一为第一天 (值从1到7,星期一为1)
 
%U 第年的第几周,把星期日作为第一天(值从0到53)
 
%V 每年的第几周,使用基于周的年
 
%w 十进制表示的星期几(值从0到6,星期天为0)
 
%W 每年的第几周,把星期一做为第一天(值从0到53)
 
%x 标准的日期串
 
%X 标准的时间串
 
%y 不带世纪的十进制年份(值从0到99)
 
%Y 带世纪部分的十制年份
 
%z,%Z 时区名称,如果不能得到时区名称则返回空字符。
 
%% 百分号
 
获取微秒级时间的方法int  gettimeofday(struct timeval *tv, struct timezone *tz),目前的时间用tv所指的结构返回,时区信息则存在tz所指的结构里。
struct timeval
{
     long tv_sec;/秒/
     long tv_usec;/微秒/
};
struct timezone
{
     int tz_minutestwest;/和格林威治时间差几分钟/
     int tz_dsttime;
}
一般运用时,置tz为空,只取tv的值。
#include <sys/time.h>
#include <stdio.h>
int main(void)
{
     int i;
     struct timeval tv;
    
     for(i = 0; i < 4; i++)
     {
          gettimeofday(&tv, NULL);
          printf("%d\t%d\n", tv.tv_usec, tv.tv_sec);
          sleep(1);
     }
 
     return 0;
}

C语言 时间函数的学习和总结的更多相关文章

  1. C语言 时间函数的学习

    一直都是以简单的time_t t,time(&t),ctime(&t)来表示时间,后来要以时间为日志文件的名字时,就有点蒙逼了.学习一下. tm结构: struct tm { int ...

  2. C 语言 时间函数使用技巧(汇总)

    time.h 头文件 是 C 语言中 有关 时间的函数所储存的头文件 #include <time.h> 在介绍时间函数用法之前,我们首先要了解在 time.h 头文件中已经声明了的一个结 ...

  3. go语言时间函数

    以YY-mm-dd HH:MM:SS.9位 输出当前时间: func main() { fmt.Println(time.Now()) // 2019-11-15 16:26:12.4807588 + ...

  4. R语言——绘图函数深入学习

    利用R自带数据集 通过data()函数可以查看R自带数据集. > data() 返回以下结果,每一条记录都是一个数据,键入相应的数据名称可以查看具体信息. Data sets in packag ...

  5. Go语言 时间函数

    @ 目录 引言 1. 时间格式化 2. 示例 引言 1946年2月14日,人类历史上公认的第一台现代电子计算机"埃尼阿克"(ENIAC)诞生. 计算机语言时间戳是以1970年1月1 ...

  6. C语言时间函数

    #include "time.h" #include "stdio.h" #include "stdlib.h" int main() { ...

  7. Mysql学习笔记(五)数学与日期时间函数

    学习内容: 1.数学函数 2.日期时间函数 这些函数都是很常用的函数...在这里进行简单的介绍... 数学函数: mysql); //取绝对值函数 这个函数可安全地使用于 BIGINT 值. mysq ...

  8. MYSQL学习笔记三:日期和时间函数

    MYSQL学习笔记三:日期和时间函数 1. 获取当前日期的函数和获取当前时间的函数 /*获取当前日期的函数和获取当前时间的函数.将日期以'YYYY-MM-DD'或者'YYYYMMDD'格式返回 */ ...

  9. [转帖]C语言计算时间函数 & 理解linux time命令的输出中“real”“user”“sys”的真正含义

    C语言计算时间函数 & 理解linux time命令的输出中“real”“user”“sys”的真正含义 https://blog.csdn.net/willyang519/article/d ...

随机推荐

  1. hash简单介绍

    hash也称"散列", 是一种基于映射关系的存储方式,将任意长度的二进制值输出为固定长度的较小的二进制值,这种输出的小的固定长度的值为hash值: 1. 散列技术是在关键字key与 ...

  2. js中对象使用

    简单记录javascript中对象的使用 一.创建对象 //创建一个空对象 var o={}; //创建一个含有两个属性的对象,x.y var o2={x:12,y:'12',name:'JS'}; ...

  3. 网上图书商城3--Book模块

    小技巧一:分页 ①PageBean<Book> findByCriteria(List<Expression> exprList, int pc)  --- 通用的查询方法(p ...

  4. ADO.NET操作数据库(一)

    ---恢复内容开始--- [1]ADO.Net简介2015-12-07-20:16:05 ADO.Net提供对Microsoft SQL Server数据源以及通过OLE DB和XML公开的数据源的一 ...

  5. 【小贴士】虚拟键盘与fixed带给移动端的痛!

    前言 今天来公司的主要目的就是研究虚拟键盘与fixed的问题,期间因为同事问起闭包与事件委托(阻止冒泡)相关问题,便穿插了一篇别的: [小贴士]工作中的”闭包“与事件委托的”阻止冒泡“,有兴趣的朋友可 ...

  6. 【初探移动前端开发04】jQuery Mobile (中)

    前言 昨天我们一起学习了一部分jquery mobile的知识,今天我们继续. 这些是些很基础的东西,有朋友觉得这个没有其它的好,但是学习下不吃亏嘛,我反正也不会一起学习基础啦. 例子请使用手机查看哦 ...

  7. 我们的动机(Our motivation)

    我们的动机(Our motivation) There are many PHP frameworks nowadays, but none of them is like Phalcon (Real ...

  8. ARP投毒及其防御方法

    1.攻击原理 ARP欺骗就是中间人欺骗pc机,告诉pc机它是服务器.再欺骗服务器,告诉服务器它就是pc机.以致获取服务器与pc机的会话信息. 中间人欺骗服务器时,会给服务器发一个报文,发之前把报文中的 ...

  9. UI键盘通知

    #import "ViewController.h" @interface ViewController () @property (nonatomic,strong) UITex ...

  10. Android 常见对话框

    1.对话框通知(Dialog Notification) 当你的应用需要显示一个进度条或需要用户对信息进行确认时,可以使用对话框来完成. 下面代码将打开一个如图所示的对话框: public void ...