關於不同地區夏令時處理的問題

2021-10-23 03:53:43 字數 1847 閱讀 8705

剛第一家實習,就到了要說離開的時候了 !

實習期間,做了個小專案,有個夏令時區間判定定的小演算法問題,也不是太難,不過也算自己處理的乙個小難題了,下面是一些相關的**。

傳參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...