#include #include #include "libbbsutil.h" static char cdate_buffer[32]; /** * 閏年 */ int is_leap_year(int year) { return year % 400 == 0 || (year % 4 == 0 && year % 100 != 0); } /** * 給日期求星座 * * @return 1..12 */ int getHoroscope(int m, int d) { if (m > 12 || m < 1) return 1; // 摩羯 水瓶 雙魚 牡羊 金牛 雙子 巨蟹 獅子 處女 天秤 天蠍 射手 const int firstday[12] = { /* Jan. */ 20, 19, 21, 20, 21, 21, 23, 23, 23, 23, 22, 22 }; if (d >= firstday[m - 1]) { if (m == 12) return 1; else return m + 1; } else return m; } /** * 23+1 bytes, "12/31/2007 00:00:00 Mon\0" */ char * Cdate(const time4_t *clock) { time_t temp = (time_t)*clock; struct tm *mytm = localtime(&temp); strftime(cdate_buffer, sizeof(cdate_buffer), "%m/%d/%Y %T %a", mytm); return cdate_buffer; } /** * 19+1 bytes, "12/31/2007 00:00:00\0" */ char * Cdatelite(const time4_t *clock) { time_t temp = (time_t)*clock; struct tm *mytm = localtime(&temp); strftime(cdate_buffer, sizeof(cdate_buffer), "%m/%d/%Y %T", mytm); return cdate_buffer; } /** * 10+1 bytes, "12/31/2007\0" */ char * Cdatedate(const time4_t * clock) { time_t temp = (time_t)*clock; struct tm *mytm = localtime(&temp); strftime(cdate_buffer, sizeof(cdate_buffer), "%m/%d/%Y", mytm); return cdate_buffer; } #ifdef TIMET64 char * ctime4(const time4_t *clock) { time_t temp = (time_t)*clock; return ctime(&temp); } struct tm *localtime4(const time4_t *t) { if( t == NULL ) return localtime(NULL); else { time_t temp = (time_t)*t; return localtime(&temp); } } time4_t time4(time4_t *ptr) { if( ptr == NULL ) return time(NULL); else return *ptr = (time4_t)time(NULL); } #endif char * my_ctime(const time4_t * t, char *ans, int len) { struct tm *tp; tp = localtime4((time4_t*)t); snprintf(ans, len, "%02d/%02d/%02d %02d:%02d:%02d", (tp->tm_year % 100), tp->tm_mon + 1, tp->tm_mday, tp->tm_hour, tp->tm_min, tp->tm_sec); return ans; }