剛第一家實習,就到了要說離開的時候了 !
實習期間,做了個小專案,有個夏令時區間判定定的小演算法問題,也不是太難,不過也算自己處理的乙個小難題了,下面是一些相關的**。
傳參rtc的日期時間結構體,以及夏令時結構體:
void
(rtc_timetypedef *ptime, rtc_datetypedef *pdate, dst_t dst)
else
if(dst.weekday_numstop==5)
else
printf
("start_m:%d stop_m:%d now:%d start:%d stop:%d\r\n"
,weekday_firstday_startmonth,weekday_firstday_stopmonth,days_of_thisyear,dststartdays_of_thisyear,dststopdays_of_thisyear);if
(dststartdays_of_thisyear<=days_of_thisyear && days_of_thisyearelse
if(hours <0)
day =
get_days_in_month
(month, year);}
}else
if(hours >=24)
}}ptime->hours = hours;
pdate->year = year;
pdate->month = month;
pdate->date = day;
}
上面有用到乙個關於日曆演算法的小函式,我也是網上查到的,有點懶得想,哈哈哈
int
get_days
(int year,
int month,
int day)
//int
days_of_month
(int year,
int month);if
(2== month &&
is_leap_year
(year)
)return29;
else
return month_days[month-1]
;}intdays_of_year
(int year,
int month,
int day)
return days + day;}//
//static
const uint8_t days_in_month[12]
=;static uint8_t get_days_in_month
(uint8_t month, uint8_t year)
//
為了方便理解,我把rtc結構體跟dst結構體也列舉一下,dst是我自己建的,裡面的邏輯是幾月份第幾個週幾的幾點開始 到 幾月份第幾個週幾的幾點結束,因為這個結口的資料來源相對可靠,所以也就沒做資料排錯處理,其實就是懶,哈哈哈
typedef
struct dst
dst_t;
/** * @brief rtc time structure definition
*/typedef
struct
rtc_timetypedef;
/** * @brief rtc date structure definition
*/typedef
struct
rtc_datetypedef;
//rtc結構體是去了注釋的hal庫函式哦
還有個實現每日schedule的演算法,有點小得意,嘻嘻嘻,以後再說 php date 怎麼處理 夏令時 冬令時的切換
11月的第乙個星期天,冬令時開始。北京時間 星期日 11 59 59 對應 edt 星期六的 23 59 59 然後轉到新的一天了,北京時間 12 00 00 對應成了 est 00 00 00 但是根據說法,冬令時是要把表撥慢乙個小時,那就是表在0點時,撥回到23點,要過2個23點?但是程式使用 ...
其它 關於時間函式mktime函式夏令時的問題
在很多應用中,我們會用mktime函式進行時間準換操作,但這裡面有乙個夏令時的操作問題 我們的最終目的是把字串格式的時間轉換為內部使用的 日曆時間 即到utc 1970年1月1日零時的秒數。這裡就存在夏令時的問題。比如俄羅斯時間2008年10月26日2 30由於夏令時的跳變會經過兩次,這兩次所代表的...
關於用程式設計 取本地時間時,會有夏令時的坑,
zhenmu zhenmu tz gst 1 export tz zhenmu zhenmu date y m d h m s d 1583712000 2020 03 09 01 00 00 zhenmu zhenmu date y m d h m s d 1592352000 2020 06 1...