iT邦幫忙

0

C 呼叫民國時間格式的方式

  • 分享至 

  • xImage

大家好
最近在學習使用C印出目前當下的時間
並透過一定的格式輸出
格式如下
MMDDHHMMSS 月、日、時、分、秒

如現在我Po文時間
0111104503
翻成中文就是
一月十一日十點四十五分三秒
共十碼,而且都要正確無誤輸出 月 日 時 分 秒

以下這是小弟的方法,但覺得不是最好的方式
https://ithelp.ithome.com.tw/upload/images/20220111/20137810hWoFeVhA44.png
咦?這怎麼不是我要的格式,但變為
0011104701
怎麼讀起來怪怪的?但好像也是可以讀得出來?
一月十一日零四分零壹秒? 我是不是漏了什麼?

於是查了一下時間格式的函式
https://ithelp.ithome.com.tw/upload/images/20220111/20137810gXiihRinpW.png

看來是月份,於是我在時間前面加個 1 +
https://ithelp.ithome.com.tw/upload/images/20220111/20137810XG0Zv6kZhJ.png

這樣正確了,是我要的格式
0111105612
一月十一日十點五十六分十二秒
其實這個1+也就是處理月份取值0-11的意思,加一才會是正常

但是這種每次重複call一次時間函數出來的方式,在系統處理大量資料效能變低的時候可能會造成交易與處理時間會有偏差,就算可能不到十秒鐘
但是如果要避免這樣的情況,有什麼更好的方式將時間印出呢?

看更多先前的討論...收起先前的討論...
你有沒有注意到,有些也是從0開始起算.

存放的內容轉成你想要的顯示方式,這就自己要加工,程式就是一個段落,一個段落逐步處理.
這裡有些介紹,裡面還有其他現成的函數可以呼叫.
https://zh.wikipedia.org/wiki/Time.h
如果我想用strftime()來寫呢?
但是目前只能顯示有/ / 格式的日期
time_t rawtime;
struct tm *info;
char buffer[80];

time(&rawtime);

info = localtime(&rawtime);

strftime(buffer,80,"%x%I%M\n", info);
printf("格式化的日期 & 時間 : %sn", buffer);

該怎麼把斜槓拿掉呢?
https://www.tutorialspoint.com/c_standard_library/c_function_strftime.htm
你可能是看到這個頁面吧.
裡面不是有一張表, %Y Year 年, %m Month as a decimal number (01-12) 月,
%d Day of the month (01-31) 日.
可以自行組合.
請至回答區回答
樓主才能選您為最佳解答 ^_^
strftime(buffer,sizeof(buffer),"%m%d%H%M%S\n", info);
printf("格式化的日期 & 時間 : %sn", buffer);
寫出來了~~
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答