项目场景:
OLED格式化打印日期和时间
问题描述
我们在使用OLED显示时间和日期的时候常常会出现格式显示不全的情况,且需要逐行调整显示位置。例如,当我们需要显示日期的时候想要把位数补齐,将日期2023/6/14显示为2023/06/14,将时间9:12:1显示为09:12:01,可以使用下面这种方法。
解决方案:
我在这里利用了sprintf函数,sprintf使用与printf上使用format时打印的文本相同的文本编写一个字符串,但内容不是打印的,而是以C字符串的形式存储在str指向的缓冲区中。它可以将制定数据按照自己想要的格式编写为一个字符串。
sprintf函数介绍请参照:sprintf - C++ Reference (cplusplus.com)
下面是我的日期时间显示函数
void OLED_ShowTime(int * Array)
{
//Array是一个装有日期时间数据的数组
uint8_t Date[10] = {'0'};
sprintf(Date,"%d/%02d/%02d",Array[0],Array[1],Array[2]);
OLED_ShowString(0, 0, Date, 24, 0);
uint8_t Time[8] = {'0'};
sprintf(Time,"%02d:%02d:%02d",Array[3],Array[4],Array[5]);
OLED_ShowString(140, 0, Time, 24, 0);
}
效果: