经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C 语言 » 查看文章
C语言实现时间处理工具的示例代码
来源:jb51  时间:2022/9/20 9:28:55  对本文有异议

c语言-时间处理工具

头文件

  1. #ifndef STUDY_TIME_UTIL_H
  2. #define STUDY_TIME_UTIL_H
  3.  
  4. long get_current_timestamp();
  5. long get_time_difference(long start_time,long end_time);
  6. char* get_time_by_timestamp(long timestamp);
  7. char* format_time(long timestamp,char* format);
  8. int standard_to_stamp(char *str_time);
  9. int get_current_year();
  10. int get_current_month();
  11. int get_current_day();
  12. int get_current_hour();
  13. int get_current_minute();
  14. int get_current_second();
  15. int get_current_week();
  16. long get_time_difference_second(long start_time,long end_time);
  17. long get_time_difference_minute(long start_time,long end_time);
  18. long get_time_difference_hour(long start_time,long end_time);
  19. long get_time_difference_day(long start_time,long end_time);
  20. long get_time_difference_month(long start_time,long end_time);
  21. long get_time_difference_year(long start_time,long end_time);
  22. long add_time(long timestamp,int seconds);
  23. long sub_time(long timestamp,int seconds);
  24. long add_week(long timestamp,int week);
  25. long add_second(long timestamp,int second);
  26. long add_minute(long timestamp,int minute);
  27. long add_hour(long timestamp,int hour);
  28. long add_day(long timestamp,int day);
  29. long add_month(long timestamp,int month);
  30. long add_year(long timestamp,int year);
  31. int compare_time(long timestamp1,long timestamp2);
  32. char* week_to_str(int week);
  33. int is_leap_year(int year);
  34. char* get_season_by_timestamp(long timestamp);
  35. long get_first_day_of_month();
  36. long get_first_day_of_month_by_month(int month);
  37. long get_last_day_of_month_by_month(int month);
  38. long get_first_day_of_month_by_year(int year);
  39. long get_last_day_of_month_by_year(int year);
  40. long get_first_day_of_week_by_timestamp(long timestamp);
  41. long get_last_day_of_week_by_timestamp(long timestamp);
  42. int get_day_of_month();
  43. int get_day_of_year();
  44. int get_day_of_week();
  45. int get_day_of_season();
  46. long get_start_time_of_day(long timestamp);
  47. long get_end_time_of_day(long timestamp);
  48.  
  49. #endif //STUDY_TIME_UTIL_H

功能实现

  1. #include "time_util.h"
  2. #include<time.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6.  
  7.  
  8.  
  9. //获取当前时间戳
  10. long get_current_timestamp(){
  11. time_t timep;
  12. time (&timep);
  13. return timep;
  14. }
  15. //计算两个时间戳的时间差(返回毫秒)
  16. long get_time_difference(long start_time,long end_time){
  17. return end_time-start_time;
  18. }
  19. //计算两个时间戳的时间差(返回秒)
  20. long get_time_difference_second(long start_time,long end_time){
  21. return (end_time-start_time)/1000;
  22. }
  23. //计算两个时间戳的时间差(返回分钟)
  24. long get_time_difference_minute(long start_time,long end_time){
  25. return (end_time-start_time)/60;
  26. }
  27. //计算两个时间戳的时间差(返回小时)
  28. long get_time_difference_hour(long start_time,long end_time){
  29. return (end_time-start_time)/3600;
  30. }
  31. //计算两个时间戳的时间差(返回天)
  32. long get_time_difference_day(long start_time,long end_time){
  33. return (end_time-start_time)/86400;
  34. }
  35. //计算两个时间戳的时间差(返回月)
  36. long get_time_difference_month(long start_time,long end_time){
  37. return (end_time-start_time)/2592000;
  38. }
  39. //计算两个时间戳的时间差(返回年)
  40. long get_time_difference_year(long start_time,long end_time){
  41. return (end_time-start_time)/31104000;
  42. }
  43.  
  44. //将时间戳转换为时间
  45. char* get_time_by_timestamp(long timestamp){
  46. time_t timep = timestamp;
  47. char* time_str = ctime(&timep);
  48. return time_str;
  49. }
  50.  
  51.  
  52. //时间相加
  53. long add_time(long timestamp,int seconds){
  54. return timestamp+seconds;
  55. }
  56. //时间相减
  57. long sub_time(long timestamp,int seconds){
  58. return timestamp-seconds;
  59. }
  60. //时间比较(时间戳) ( timestamp1比timestamp2)(1:大于 0:等于 -1:小于)
  61. int compare_time(long timestamp1,long timestamp2){
  62. if(timestamp1>timestamp2){
  63. return 1;
  64. }else if(timestamp1<timestamp2){
  65. return -1;
  66. }else{
  67. return 0;
  68. }
  69. }
  70. //格式化时间("%Y-%m-%d %H:%M:%S)
  71. char* format_time(long timestamp,char* format){
  72. time_t timep = timestamp;
  73. localtime(&timep);
  74. char *buffer=malloc(100);
  75. strftime(buffer, 100, format, localtime(&timep));
  76. return buffer;
  77. }
  78.  
  79. //获取当前时间的年份
  80. int get_current_year(){
  81. time_t timep;
  82. time (&timep);
  83. return localtime(&timep)->tm_year+1900;
  84. }
  85. //获取当前时间的月份
  86. int get_current_month(){
  87. time_t timep;
  88. time (&timep);
  89. return localtime(&timep)->tm_mon+1;
  90. }
  91. //获取当前时间的日
  92. int get_current_day(){
  93. time_t timep;
  94. time (&timep);
  95. return localtime(&timep)->tm_mday;
  96. }
  97. //获取当前时间的小时
  98. int get_current_hour(){
  99. time_t timep;
  100. time (&timep);
  101. return localtime(&timep)->tm_hour;
  102. }
  103. //获取当前时间的分钟
  104. int get_current_minute(){
  105. time_t timep;
  106. time (&timep);
  107. return localtime(&timep)->tm_min;
  108. }
  109. //获取当前时间的秒
  110. int get_current_second(){
  111. time_t timep;
  112. time (&timep);
  113. return localtime(&timep)->tm_sec;
  114. }
  115. //获取当前时间的星期
  116. int get_current_week(){
  117. time_t timep;
  118. time (&timep);
  119. return localtime(&timep)->tm_wday;
  120. }
  121.  
  122. //星期转换
  123. char* week_to_str(int week){
  124. switch (week){
  125. case 0:
  126. return "星期日";
  127. case 1:
  128. return "星期一";
  129. case 2:
  130. return "星期二";
  131. case 3:
  132. return "星期三";
  133. case 4:
  134. return "星期四";
  135. case 5:
  136. return "星期五";
  137. case 6:
  138. return "星期六";
  139. default:
  140. return "未知";
  141. }
  142. }
  143.  
  144. //世界时间转北京时间(需要+8小时)
  145. long utc_to_cst(long timestamp){
  146. return timestamp+28800;
  147. }
  148.  
  149. //将标准时间(2022-09-12 13:46:14或者2022/09/12 13:46:14)转换为时间戳
  150. int standard_to_stamp(char *str_time){
  151. struct tm stm;
  152. int iY,iM,iD,iH,iMin,iS;
  153. memset(&stm,0,sizeof(stm));
  154. iY = atoi(str_time);
  155. iM = atoi(str_time+5);
  156. iD = atoi(str_time+8);
  157. iH = atoi(str_time+11);
  158. iMin = atoi(str_time+14);
  159. iS = atoi(str_time+17);
  160. stm.tm_year=iY-1900;
  161. stm.tm_mon=iM-1;
  162. stm.tm_mday=iD;
  163. stm.tm_hour=iH;
  164. stm.tm_min=iMin;
  165. stm.tm_sec=iS;
  166. return (int)mktime(&stm);
  167. }
  168.  
  169. //判断平年和闰年(1:平年 0:闰年) 闰年2月29天 平年2月28天 闰年能被4整除但不能被100整除的年份为闰年。能被400整除的为闰年
  170. int is_leap_year(int year){
  171. if(year%4==0&&year%100!=0||year%400==0){
  172. return 1;
  173. }else{
  174. return 0;
  175. }
  176. }
  177.  
  178. //通过时间戳获取季节
  179. char* get_season_by_timestamp(long timestamp){
  180. int month = get_current_month();
  181. if(month>=3&&month<=5){
  182. return "春季";
  183. }else if(month>=6&&month<=8){
  184. return "夏季";
  185. }else if(month>=9&&month<=11){
  186. return "秋季";
  187. }else{
  188. return "冬季";
  189. }
  190. }
  191.  
  192. //获取本月第一天的日期时间戳
  193. long get_first_day_of_month(){
  194. time_t timep;
  195. time (&timep);
  196. struct tm *p;
  197. p=localtime(&timep);
  198. p->tm_mday=1;
  199. p->tm_hour=0;
  200. p->tm_min=0;
  201. p->tm_sec=0;
  202. return mktime(p);
  203. }
  204.  
  205. //获取指定月份的第一天的日期时间戳
  206. long get_first_day_of_month_by_month(int month){
  207. time_t timep;
  208. time (&timep);
  209. struct tm *p;
  210. p=localtime(&timep);
  211. p->tm_mon=month-1;
  212. p->tm_mday=1;
  213. p->tm_hour=0;
  214. p->tm_min=0;
  215. p->tm_sec=0;
  216. return mktime(p);
  217. }
  218. //获取指定月份最后一天日期时间戳
  219. long get_last_day_of_month_by_month(int month){
  220. time_t timep;
  221. time (&timep);
  222. struct tm *p;
  223. p=localtime(&timep);
  224. p->tm_mon=month;
  225. p->tm_mday=0;
  226. p->tm_hour=0;
  227. p->tm_min=0;
  228. p->tm_sec=0;
  229. return mktime(p);
  230. }
  231. //获取指定年份的第一天的日期时间戳
  232. long get_first_day_of_month_by_year(int year){
  233. time_t timep;
  234. time (&timep);
  235. struct tm *p;
  236. p=localtime(&timep);
  237. p->tm_year=year-1900;
  238. p->tm_mon=0;
  239. p->tm_mday=1;
  240. p->tm_hour=0;
  241. p->tm_min=0;
  242. p->tm_sec=0;
  243. return mktime(p);
  244. }
  245. //获取指定年份最后一天日期时间戳
  246. long get_last_day_of_month_by_year(int year){
  247. time_t timep;
  248. time (&timep);
  249. struct tm *p;
  250. p=localtime(&timep);
  251. p->tm_year=year-1900;
  252. p->tm_mon=11;
  253. p->tm_mday=31;
  254. p->tm_hour=0;
  255. p->tm_min=0;
  256. p->tm_sec=0;
  257. return mktime(p);
  258. }
  259.  
  260. //获取指定日期当周第一天的日期时间戳
  261. long get_first_day_of_week_by_timestamp(long timestamp){
  262. time_t timep;
  263. timep = timestamp;
  264. struct tm *p;
  265. p=localtime(&timep);
  266. p->tm_mday=p->tm_mday-p->tm_wday;
  267. p->tm_hour=0;
  268. p->tm_min=0;
  269. p->tm_sec=0;
  270. return mktime(p);
  271. }
  272. //获取指定日期当周最后一天的日期时间戳
  273. long get_last_day_of_week_by_timestamp(long timestamp){
  274. time_t timep;
  275. timep = timestamp;
  276. struct tm *p;
  277. p=localtime(&timep);
  278. p->tm_mday=p->tm_mday+(6-p->tm_wday);
  279. p->tm_hour=0;
  280. p->tm_min=0;
  281. p->tm_sec=0;
  282. return mktime(p);
  283. }
  284.  
  285. //获取今天是本月的第几天
  286. int get_day_of_month(){
  287. time_t timep;
  288. time (&timep);
  289. struct tm *p;
  290. p=localtime(&timep);
  291. return p->tm_mday;
  292. }
  293. //获取今天是本年的第几天
  294. int get_day_of_year(){
  295. time_t timep;
  296. time (&timep);
  297. struct tm *p;
  298. p=localtime(&timep);
  299. return p->tm_yday;
  300. }
  301. //获取今天是本周的第几天
  302. int get_day_of_week(){
  303. time_t timep;
  304. time (&timep);
  305. struct tm *p;
  306. p=localtime(&timep);
  307. return p->tm_wday;
  308. }
  309. //获取今天是本季度的第几天
  310. int get_day_of_season(){
  311. time_t timep;
  312. time (&timep);
  313. struct tm *p;
  314. p=localtime(&timep);
  315. int month = p->tm_mon;
  316. int day = p->tm_mday;
  317. if(month>=0&&month<=2){
  318. return day;
  319. }else if(month>=3&&month<=5){
  320. return day+31;
  321. }else if(month>=6&&month<=8){
  322. return day+31+30;
  323. }else{
  324. return day+31+30+31;
  325. }
  326. }
  327. //获取指定时间的开始时间的日期时间戳 (也就是指定时间的00:00:00)
  328. long get_start_time_of_day(long timestamp){
  329. time_t timep;
  330. timep = timestamp;
  331. struct tm *p;
  332. p=localtime(&timep);
  333. p->tm_hour=0;
  334. p->tm_min=0;
  335. p->tm_sec=0;
  336. return mktime(p);
  337. }
  338. //获取指定时间的结束时间的日期时间戳 (也就是指定时间的23:59:59)
  339. long get_end_time_of_day(long timestamp){
  340. time_t timep;
  341. timep = timestamp;
  342. struct tm *p;
  343. p=localtime(&timep);
  344. p->tm_hour=23;
  345. p->tm_min=59;
  346. p->tm_sec=59;
  347. return mktime(p);
  348. }
  349.  
  350. //添加指定天数
  351. long add_day(long timestamp,int day){
  352. time_t timep;
  353. timep = timestamp;
  354. struct tm *p;
  355. p=localtime(&timep);
  356. p->tm_mday=p->tm_mday+day;
  357. return mktime(p);
  358. }
  359. //添加指定月数
  360. long add_month(long timestamp,int month){
  361. time_t timep;
  362. timep = timestamp;
  363. struct tm *p;
  364. p=localtime(&timep);
  365. p->tm_mon=p->tm_mon+month;
  366. return mktime(p);
  367. }
  368. //添加指定年数
  369. long add_year(long timestamp,int year){
  370. time_t timep;
  371. timep = timestamp;
  372. struct tm *p;
  373. p=localtime(&timep);
  374. p->tm_year=p->tm_year+year;
  375. return mktime(p);
  376. }
  377. //添加指定小时数
  378. long add_hour(long timestamp,int hour){
  379. time_t timep;
  380. timep = timestamp;
  381. struct tm *p;
  382. p=localtime(&timep);
  383. p->tm_hour=p->tm_hour+hour;
  384. return mktime(p);
  385. }
  386. //添加指定分钟数
  387. long add_minute(long timestamp,int minute){
  388. time_t timep;
  389. timep = timestamp;
  390. struct tm *p;
  391. p=localtime(&timep);
  392. p->tm_min=p->tm_min+minute;
  393. return mktime(p);
  394. }
  395. //添加指定秒数
  396. long add_second(long timestamp,int second){
  397. time_t timep;
  398. timep = timestamp;
  399. struct tm *p;
  400. p=localtime(&timep);
  401. p->tm_sec=p->tm_sec+second;
  402. return mktime(p);
  403. }
  404. //添加指定周数
  405. long add_week(long timestamp,int week){
  406. time_t timep;
  407. timep = timestamp;
  408. struct tm *p;
  409. p=localtime(&timep);
  410. p->tm_mday=p->tm_mday+week*7;
  411. return mktime(p);
  412. }

以上就是C语言实现时间处理工具的示例代码的详细内容,更多关于C语言时间处理工具的资料请关注w3xue其它相关文章!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号