您好,登錄后才能下訂單哦!
本文小編為大家詳細(xì)介紹“怎么用C語言實(shí)現(xiàn)時(shí)間處理工具”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“怎么用C語言實(shí)現(xiàn)時(shí)間處理工具”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識(shí)吧。
#ifndef STUDY_TIME_UTIL_H #define STUDY_TIME_UTIL_H long get_current_timestamp(); long get_time_difference(long start_time,long end_time); char* get_time_by_timestamp(long timestamp); char* format_time(long timestamp,char* format); int standard_to_stamp(char *str_time); int get_current_year(); int get_current_month(); int get_current_day(); int get_current_hour(); int get_current_minute(); int get_current_second(); int get_current_week(); long get_time_difference_second(long start_time,long end_time); long get_time_difference_minute(long start_time,long end_time); long get_time_difference_hour(long start_time,long end_time); long get_time_difference_day(long start_time,long end_time); long get_time_difference_month(long start_time,long end_time); long get_time_difference_year(long start_time,long end_time); long add_time(long timestamp,int seconds); long sub_time(long timestamp,int seconds); long add_week(long timestamp,int week); long add_second(long timestamp,int second); long add_minute(long timestamp,int minute); long add_hour(long timestamp,int hour); long add_day(long timestamp,int day); long add_month(long timestamp,int month); long add_year(long timestamp,int year); int compare_time(long timestamp1,long timestamp2); char* week_to_str(int week); int is_leap_year(int year); char* get_season_by_timestamp(long timestamp); long get_first_day_of_month(); long get_first_day_of_month_by_month(int month); long get_last_day_of_month_by_month(int month); long get_first_day_of_month_by_year(int year); long get_last_day_of_month_by_year(int year); long get_first_day_of_week_by_timestamp(long timestamp); long get_last_day_of_week_by_timestamp(long timestamp); int get_day_of_month(); int get_day_of_year(); int get_day_of_week(); int get_day_of_season(); long get_start_time_of_day(long timestamp); long get_end_time_of_day(long timestamp); #endif //STUDY_TIME_UTIL_H
#include "time_util.h" #include<time.h> #include <stdio.h> #include <stdlib.h> #include <string.h> //獲取當(dāng)前時(shí)間戳 long get_current_timestamp(){ time_t timep; time (&timep); return timep; } //計(jì)算兩個(gè)時(shí)間戳的時(shí)間差(返回毫秒) long get_time_difference(long start_time,long end_time){ return end_time-start_time; } //計(jì)算兩個(gè)時(shí)間戳的時(shí)間差(返回秒) long get_time_difference_second(long start_time,long end_time){ return (end_time-start_time)/1000; } //計(jì)算兩個(gè)時(shí)間戳的時(shí)間差(返回分鐘) long get_time_difference_minute(long start_time,long end_time){ return (end_time-start_time)/60; } //計(jì)算兩個(gè)時(shí)間戳的時(shí)間差(返回小時(shí)) long get_time_difference_hour(long start_time,long end_time){ return (end_time-start_time)/3600; } //計(jì)算兩個(gè)時(shí)間戳的時(shí)間差(返回天) long get_time_difference_day(long start_time,long end_time){ return (end_time-start_time)/86400; } //計(jì)算兩個(gè)時(shí)間戳的時(shí)間差(返回月) long get_time_difference_month(long start_time,long end_time){ return (end_time-start_time)/2592000; } //計(jì)算兩個(gè)時(shí)間戳的時(shí)間差(返回年) long get_time_difference_year(long start_time,long end_time){ return (end_time-start_time)/31104000; } //將時(shí)間戳轉(zhuǎn)換為時(shí)間 char* get_time_by_timestamp(long timestamp){ time_t timep = timestamp; char* time_str = ctime(&timep); return time_str; } //時(shí)間相加 long add_time(long timestamp,int seconds){ return timestamp+seconds; } //時(shí)間相減 long sub_time(long timestamp,int seconds){ return timestamp-seconds; } //時(shí)間比較(時(shí)間戳) ( timestamp1比timestamp2)(1:大于 0:等于 -1:小于) int compare_time(long timestamp1,long timestamp2){ if(timestamp1>timestamp2){ return 1; }else if(timestamp1<timestamp2){ return -1; }else{ return 0; } } //格式化時(shí)間("%Y-%m-%d %H:%M:%S) char* format_time(long timestamp,char* format){ time_t timep = timestamp; localtime(&timep); char *buffer=malloc(100); strftime(buffer, 100, format, localtime(&timep)); return buffer; } //獲取當(dāng)前時(shí)間的年份 int get_current_year(){ time_t timep; time (&timep); return localtime(&timep)->tm_year+1900; } //獲取當(dāng)前時(shí)間的月份 int get_current_month(){ time_t timep; time (&timep); return localtime(&timep)->tm_mon+1; } //獲取當(dāng)前時(shí)間的日 int get_current_day(){ time_t timep; time (&timep); return localtime(&timep)->tm_mday; } //獲取當(dāng)前時(shí)間的小時(shí) int get_current_hour(){ time_t timep; time (&timep); return localtime(&timep)->tm_hour; } //獲取當(dāng)前時(shí)間的分鐘 int get_current_minute(){ time_t timep; time (&timep); return localtime(&timep)->tm_min; } //獲取當(dāng)前時(shí)間的秒 int get_current_second(){ time_t timep; time (&timep); return localtime(&timep)->tm_sec; } //獲取當(dāng)前時(shí)間的星期 int get_current_week(){ time_t timep; time (&timep); return localtime(&timep)->tm_wday; } //星期轉(zhuǎn)換 char* week_to_str(int week){ switch (week){ case 0: return "星期日"; case 1: return "星期一"; case 2: return "星期二"; case 3: return "星期三"; case 4: return "星期四"; case 5: return "星期五"; case 6: return "星期六"; default: return "未知"; } } //世界時(shí)間轉(zhuǎn)北京時(shí)間(需要+8小時(shí)) long utc_to_cst(long timestamp){ return timestamp+28800; } //將標(biāo)準(zhǔn)時(shí)間(2022-09-12 13:46:14或者2022/09/12 13:46:14)轉(zhuǎn)換為時(shí)間戳 int standard_to_stamp(char *str_time){ struct tm stm; int iY,iM,iD,iH,iMin,iS; memset(&stm,0,sizeof(stm)); iY = atoi(str_time); iM = atoi(str_time+5); iD = atoi(str_time+8); iH = atoi(str_time+11); iMin = atoi(str_time+14); iS = atoi(str_time+17); stm.tm_year=iY-1900; stm.tm_mon=iM-1; stm.tm_mday=iD; stm.tm_hour=iH; stm.tm_min=iMin; stm.tm_sec=iS; return (int)mktime(&stm); } //判斷平年和閏年(1:平年 0:閏年) 閏年2月29天 平年2月28天 閏年能被4整除但不能被100整除的年份為閏年。能被400整除的為閏年 int is_leap_year(int year){ if(year%4==0&&year%100!=0||year%400==0){ return 1; }else{ return 0; } } //通過時(shí)間戳獲取季節(jié) char* get_season_by_timestamp(long timestamp){ int month = get_current_month(); if(month>=3&&month<=5){ return "春季"; }else if(month>=6&&month<=8){ return "夏季"; }else if(month>=9&&month<=11){ return "秋季"; }else{ return "冬季"; } } //獲取本月第一天的日期時(shí)間戳 long get_first_day_of_month(){ time_t timep; time (&timep); struct tm *p; p=localtime(&timep); p->tm_mday=1; p->tm_hour=0; p->tm_min=0; p->tm_sec=0; return mktime(p); } //獲取指定月份的第一天的日期時(shí)間戳 long get_first_day_of_month_by_month(int month){ time_t timep; time (&timep); struct tm *p; p=localtime(&timep); p->tm_mon=month-1; p->tm_mday=1; p->tm_hour=0; p->tm_min=0; p->tm_sec=0; return mktime(p); } //獲取指定月份最后一天日期時(shí)間戳 long get_last_day_of_month_by_month(int month){ time_t timep; time (&timep); struct tm *p; p=localtime(&timep); p->tm_mon=month; p->tm_mday=0; p->tm_hour=0; p->tm_min=0; p->tm_sec=0; return mktime(p); } //獲取指定年份的第一天的日期時(shí)間戳 long get_first_day_of_month_by_year(int year){ time_t timep; time (&timep); struct tm *p; p=localtime(&timep); p->tm_year=year-1900; p->tm_mon=0; p->tm_mday=1; p->tm_hour=0; p->tm_min=0; p->tm_sec=0; return mktime(p); } //獲取指定年份最后一天日期時(shí)間戳 long get_last_day_of_month_by_year(int year){ time_t timep; time (&timep); struct tm *p; p=localtime(&timep); p->tm_year=year-1900; p->tm_mon=11; p->tm_mday=31; p->tm_hour=0; p->tm_min=0; p->tm_sec=0; return mktime(p); } //獲取指定日期當(dāng)周第一天的日期時(shí)間戳 long get_first_day_of_week_by_timestamp(long timestamp){ time_t timep; timep = timestamp; struct tm *p; p=localtime(&timep); p->tm_mday=p->tm_mday-p->tm_wday; p->tm_hour=0; p->tm_min=0; p->tm_sec=0; return mktime(p); } //獲取指定日期當(dāng)周最后一天的日期時(shí)間戳 long get_last_day_of_week_by_timestamp(long timestamp){ time_t timep; timep = timestamp; struct tm *p; p=localtime(&timep); p->tm_mday=p->tm_mday+(6-p->tm_wday); p->tm_hour=0; p->tm_min=0; p->tm_sec=0; return mktime(p); } //獲取今天是本月的第幾天 int get_day_of_month(){ time_t timep; time (&timep); struct tm *p; p=localtime(&timep); return p->tm_mday; } //獲取今天是本年的第幾天 int get_day_of_year(){ time_t timep; time (&timep); struct tm *p; p=localtime(&timep); return p->tm_yday; } //獲取今天是本周的第幾天 int get_day_of_week(){ time_t timep; time (&timep); struct tm *p; p=localtime(&timep); return p->tm_wday; } //獲取今天是本季度的第幾天 int get_day_of_season(){ time_t timep; time (&timep); struct tm *p; p=localtime(&timep); int month = p->tm_mon; int day = p->tm_mday; if(month>=0&&month<=2){ return day; }else if(month>=3&&month<=5){ return day+31; }else if(month>=6&&month<=8){ return day+31+30; }else{ return day+31+30+31; } } //獲取指定時(shí)間的開始時(shí)間的日期時(shí)間戳 (也就是指定時(shí)間的00:00:00) long get_start_time_of_day(long timestamp){ time_t timep; timep = timestamp; struct tm *p; p=localtime(&timep); p->tm_hour=0; p->tm_min=0; p->tm_sec=0; return mktime(p); } //獲取指定時(shí)間的結(jié)束時(shí)間的日期時(shí)間戳 (也就是指定時(shí)間的23:59:59) long get_end_time_of_day(long timestamp){ time_t timep; timep = timestamp; struct tm *p; p=localtime(&timep); p->tm_hour=23; p->tm_min=59; p->tm_sec=59; return mktime(p); } //添加指定天數(shù) long add_day(long timestamp,int day){ time_t timep; timep = timestamp; struct tm *p; p=localtime(&timep); p->tm_mday=p->tm_mday+day; return mktime(p); } //添加指定月數(shù) long add_month(long timestamp,int month){ time_t timep; timep = timestamp; struct tm *p; p=localtime(&timep); p->tm_mon=p->tm_mon+month; return mktime(p); } //添加指定年數(shù) long add_year(long timestamp,int year){ time_t timep; timep = timestamp; struct tm *p; p=localtime(&timep); p->tm_year=p->tm_year+year; return mktime(p); } //添加指定小時(shí)數(shù) long add_hour(long timestamp,int hour){ time_t timep; timep = timestamp; struct tm *p; p=localtime(&timep); p->tm_hour=p->tm_hour+hour; return mktime(p); } //添加指定分鐘數(shù) long add_minute(long timestamp,int minute){ time_t timep; timep = timestamp; struct tm *p; p=localtime(&timep); p->tm_min=p->tm_min+minute; return mktime(p); } //添加指定秒數(shù) long add_second(long timestamp,int second){ time_t timep; timep = timestamp; struct tm *p; p=localtime(&timep); p->tm_sec=p->tm_sec+second; return mktime(p); } //添加指定周數(shù) long add_week(long timestamp,int week){ time_t timep; timep = timestamp; struct tm *p; p=localtime(&timep); p->tm_mday=p->tm_mday+week*7; return mktime(p); }
讀到這里,這篇“怎么用C語言實(shí)現(xiàn)時(shí)間處理工具”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。