c++ mktime()

今天联系写一个日历的程序,需要算出月份中的第一天是星期几,用到了mktime()这个函数,感觉这个函数挺有用的,分享给大家。

原型:time_t mktime(struct tm *)

其中的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()为负。*/
};

我们只要给出年月日时分秒,然后用mktime()就可以,获取的星期存在tm_wday中。

貌似日期写错了也会自动换过来,比如写个1月32号会自己换成2月1号,很强大。

time_t GPCL:: systime_to_timet(const SYSTEMTIME& st)
{
	struct tm gm = {st.wSecond, st.wMinute, st.wHour, st.wDay, st.wMonth-1, st.wYear-1900, st.wDayOfWeek, 0, 0};
	return mktime(&gm);
}

  

时间: 2024-10-22 12:32:02

c++ mktime()的相关文章

取得一个日期的 Unix 时间戳 mktime()

mktime()函数 语法: int mktime ([ int $hour = date("H") [, int $minute = date("i") [, int $second = date("s") [, int $month = date("n") [, int $day = date("j") [, int $year = date("Y") ]]]]]] ) 根据给出的参

《linux 内核完全剖析》 mktime.c

tm结构体的定义在time.h里面 struct tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst; }; /* * linux/kernel/mktime.c * * (C) 1991 Linus Torvalds */ #include <time.h> /* * This isn't the libra

mktime很慢就自己去实现一个吧

mktime很慢就自己去实现一个吧 标签(空格分隔): Linux C语言 1. 前言 最近遇到一个转换数据的程序,只是一些内存操作,但是程序表现的巨慢,导致上线之后要天天盯着是否正常.忍不了,就使用gprofiler分析了一波,发现的结果是一个时间转换上十分耗时(占比达到90%多) mktime是用来把字符串时间(YYYYMMDD-HH:MM:SS)转换为unix时间戳的 2. 慢的原因 根据后面自己的测试和前辈说的总结下: 根据我的测试发现,我自己写的函数都是在用户态下的耗时,而mktime

如果mktime慢?那就使用自定义函数吧!

参考网址:https://gmbabar.wordpress.com/2010/12/01/mktime-slow-use-custom-function/ 最近我正在做以ASCII(C字符串)格式表示的时间戳的工作.为了不同的计算,我经常需要转换时间戳字符串到epoch时间.标准C库提供mktime函数,它把已经填充的tm结构作为参数传递给mktime函数.如果你不非常频繁的使用该函数,它工作的很好.但是如果你需要在运行时转换数以万计的时间戳字符串,这个函数就变成应用程序的瓶颈.我没有尝试去阅

日期时间篇asctime ctime gettimeofday gmtime localtime mktime settimeofday time

asctime(将时间和日期以字符串格式表示) 相关函数 time,ctime,gmtime,localtime 表头文件 #include<time.h> 定义函数 char * asctime(const struct tm * timeptr); 函数说明 asctime()将参数timeptr所指的tm结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回.此函数已经由时区转换成当地时间,字符串格式为:“Wed Jun 30 21:49:08 1993\n” 返

PHP date, strtotime, mktime处理

date('Y-m-d', $time()); date('Y-m-d', '1453996800'); date('Y-m-d H:i:s',  '1453996800'); date('H:i',  '1453996800'); date('w',  '1453996800'); 星期中的第几天,数字表示 0(星期天)到 6(星期六) ,  对应moment('1453996800000').format('d') date() 函数格式化一个本地时间/日期. date(format,tim

php中的time(),date(),mktime(),strtotime()

time():返回当前的Unix时间戳: date():格式化一个本地的时间戳: mktime(时,分,秒,月,日,年):取得一个日期的时间戳: strtotime():将任何英文文本的日期时间描述解析为Unix时间戳 <?php echo time(); echo date('Y-m-d H:i:s',time()); echo mktime(13,54,55,9,18,2015); echo strtotime("now"); echo strtotime("10

php date mktime 获取时间上的各种值

echo date("Ymd",strtotime("now")), "\n"; echo date("Ymd",strtotime("-1 week Monday")), "\n"; echo date("Ymd",strtotime("-1 week Sunday")), "\n"; echo date("Ymd&

PHP mktime函数获取今天的开始和结束时间戳

php 获取今日.昨日.上周.本月的起始时间戳和结束时间戳的方法,主要使用到了 php 的时间函数 mktime(). mktime函数用法如下:mktime(hour,minute,second,month,day,year,is_dst) 参数描述 hour  可选.规定小时. minute 可选.规定分钟. second 可选.规定秒. month  可选.规定用数字表示的月. day   可选.规定天. year  可选.规定年.在某些系统上,合法值介于 1901 - 2038 之间.不

《linux 内核全然剖析》 mktime.c

tm结构体的定义在time.h里面 struct tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst; }; /* * linux/kernel/mktime.c * * (C) 1991 Linus Torvalds */ #include <time.h> /* * This isn't the libra