C语言如何返回格式化日期时间(格式化时间)?(将日期和时间以字符串格式输出)ctime()、asctime()、localtime()、strftime()
生活随笔
收集整理的這篇文章主要介紹了
C语言如何返回格式化日期时间(格式化时间)?(将日期和时间以字符串格式输出)ctime()、asctime()、localtime()、strftime()
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- ctime()函數:
- asctime()函數
- 獲取自定義格式化時間(有bug,當時間為個位數時,沒有在前面自動補零)
- 改成函數接口形式(傳入字符指針)
- 20220107 優化后(能自動補零)
ctime()函數:
頭文件:
#include <time.h>定義函數:
char *ctime(const time_t *timep);函數說明:ctime()將參數timep 所指的time_t 結構中的信息轉換成真實世界所使用的時間日期表示方法,然后將結果以字符串形態返回。此函數已經由時區轉換成當地時間,字符串格式為"Wed Jun 30 21 :49 :08 1993\n"。
注意:若再調用相關的時間日期函數,此字符串可能會被破壞。
返回值:返回一字符串表示目前當地的時間日期。
#include <stdio.h> #include <stdlib.h> #include <time.h>int main(){time_t timep;time(&timep);printf("%s", ctime(&timep));return 0; }ubuntu上編譯運行結果:
[yg@ubuntu ~/arnold_test/20211214_Test_ctime_format]4$ gcc ./test.c [yg@ubuntu ~/arnold_test/20211214_Test_ctime_format]5$ ./a.out Tue Dec 14 15:07:22 2021asctime()函數
#include <stdio.h> #include <stdlib.h> #include <time.h>int main(){//char* ctime(const time_t* timep);time_t timep;time(&timep);printf("%s", ctime(&timep));printf("%s", asctime(gmtime(&timep)));return 0; }ubuntu上編譯運行結果:
[yg@ubuntu ~/arnold_test/20211214_Test_ctime_format]9$ ./a.out Tue Dec 14 15:13:04 2021 Tue Dec 14 07:13:04 2021怎么跟之前的差8個小時??前面的跟我的電腦時間是一致的。。。
獲取自定義格式化時間(有bug,當時間為個位數時,沒有在前面自動補零)
#include <time.h> #include <stdio.h> int main(void){time_t nowtime;struct tm* timeinfo;time(&nowtime);timeinfo = localtime(&nowtime);int xtn = timeinfo->tm_year + 1900;int xty = timeinfo->tm_mon + 1;int xtr = timeinfo->tm_mday;int xts = timeinfo->tm_hour;int xtf = timeinfo->tm_min;int xtm = timeinfo->tm_sec;printf("%d年%d月%d日,%d時%d分%d秒\n", xtn, xty, xtr, xts, xtf, xtm);printf("%d%d%d-%d%d%d\n", xtn, xty, xtr, xts, xtf, xtm); }ubuntu上編譯運行結果:
2021年12月14日,15時36分31秒 20211214-153631參考文章1:C語言中將日期和時間以字符串格式輸出的方法
參考文章2:c語言計算年月日時分秒程序,C語言入門級代碼 獲取當前系統的年月日時分秒
改成函數接口形式(傳入字符指針)
#include <time.h> #include <stdio.h> #include <string.h>//arnold add 獲取格式化時間 void get_format_time(char* format_time_){time_t nowtime;struct tm* timeinfo;time(&nowtime);timeinfo = localtime(&nowtime);int xtn = timeinfo->tm_year + 1900;int xty = timeinfo->tm_mon + 1;int xtr = timeinfo->tm_mday;int xts = timeinfo->tm_hour;int xtf = timeinfo->tm_min;int xtm = timeinfo->tm_sec;sprintf(format_time_, "%d%d%d-%d%d%d", xtn, xty, xtr, xts, xtf, xtm); }int main(){//arnold add:將時間作為視頻名char format_time[64] = {0};get_format_time(format_time); strcat(format_time, ".mp4"); //字符串拼接char *output_file = format_time;printf("%s\n", output_file);return 0; }ubuntu上編譯運行結果:
[yg@ubuntu ~/arnold_test/20211214_Test_ctime_format]30$ gcc ./test.c [yg@ubuntu ~/arnold_test/20211214_Test_ctime_format]31$ ./a.out 20211214-16250.mp420220107 優化后(能自動補零)
關于strftime()函數用法,可見:C語言strftime()函數 (格式化時間)(注意第二個參數size_t maxsize一定要大于第三個參數const char *format指向字符串的長度)
(ubuntu上)
#include <time.h> #include <string.h> #include <stdio.h>int get_format_time(char* format_time, size_t size) {time_t nowtime;struct tm* timeinfo;time(&nowtime);timeinfo = localtime(&nowtime);int ret = strftime(format_time, size, "%Y%m%d%H%M%S", timeinfo);return ret; }int main() {char format_time[50] = { 0 };int ret = get_format_time(format_time, sizeof(format_time));if(ret==0){printf("格式化時間字符串失敗!\n");}else{printf("成功格式化%d個字符!\n", ret);}printf("format_time: %s\n", format_time);return 0; }運行結果:
[root@ubuntu /arnold_test/20211214_Test_ctime_format]113# gcc test2.c [root@ubuntu /arnold_test/20211214_Test_ctime_format]114# ./a.out 成功格式化14個字符! format_time: 20220107220901總結
以上是生活随笔為你收集整理的C语言如何返回格式化日期时间(格式化时间)?(将日期和时间以字符串格式输出)ctime()、asctime()、localtime()、strftime()的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言编译报错:incompatible
- 下一篇: C语言字符串拼接函数:strcat()