Cách tốt nhất để chuyển đổi giữa ngày, giờ, phút, giây sang dấu thời gian Unix tính bằng mili giây trong Arduino là gì? Tôi cần có chuyển đổi này, vì tôi đang sử dụng RTC (ngày, giờ, phút, giây, v.v.) và truyền thông dấu thời gian Unix qua BLE
Tôi đã tìm thấy một số đoạn mã trực tuyến, nhưng chưa thử nghiệm rộng rãi.
byte second = epoch%60; epoch /= 60;
byte minute = epoch%60; epoch /= 60;
byte hour = epoch%24; epoch /= 24;
unsigned int years = epoch/(365*4+1)*4; epoch %= 365*4+1;
unsigned int year;
for (year=3; year>0; year--)
{
if (epoch >= days[year][0])
break;
}
unsigned int month;
for (month=11; month>0; month--)
{
if (epoch >= days[year][month])
break;
}
year = years+year;
month = month+1;
unsigned int day = epoch - days[year][month]+1;
unsigned int weekday = (dayOfMonth += month < 3 ? year-- : year - 2, 23*month/9 + dayOfMonth + 4 + year/4- year/100 + year/400)%7;
Và để chuyển đổi sang dấu thời gian Unix:
unsigned long epoch = (((year/4*(365*4+1)+days[year%4][month]+dayOfMonth)*24+hour)*60+minute)*60+second;
Có thư viện nào trong Arduino thực hiện điều này không? Tôi sẽ đánh đổi độ tin cậy về kích thước của chương trình.