home *** CD-ROM | disk | FTP | other *** search
- /*-----------------------------------------------------
- ü@FORMAT.C
- ü@ü@ſīé⌐éτò╢ÄÜù±é≡é┬é¡éΘ
- ü@ü@Copyright (C) KAZUBON 1997
- -------------------------------------------------------*/
-
- #include "tcdll.h"
-
- char *YobiJpn[7] = { "ô·", "îÄ", "ë╬", "Éà", "û╪", "ïα", "ôy" };
- char *YobiEng[7] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };
- char *MonthEng[12] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun",
- "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
-
- extern char sDate, sTime;
- extern char sAM[11], sPM[11];
- extern BOOL bHour12;
-
- /*------------------------------------------------
- ü@ſīé⌐éτò╢ÄÜù±é≡é┬é¡éΘ
- --------------------------------------------------*/
- void MakeFormat(char* s, SYSTEMTIME* pt, char* fmt)
- {
- char *sp, *dp;
-
- sp = fmt; dp = s;
- while(*sp)
- {
- if(*sp == '\"')
- {
- sp++;
- while(*sp != '\"' && *sp) *dp++ = *sp++;
- if(*sp == '\"') sp++;
- }
- else if(*sp == '/')
- {
- *dp++ = sDate; sp++;
- }
- else if(*sp == ':')
- {
- *dp++ = sTime; sp++;
- }
- else if(*sp == 'y' && *(sp + 1) == 'y')
- {
- if(*(sp + 2) == 'y' && *(sp + 3) == 'y')
- {
- *dp++ = (char)((int)pt->wYear / 1000) + '0';
- *dp++ = (char)(((int)pt->wYear % 1000) / 100) + '0';
- sp += 2;
- }
- *dp++ = (char)(((int)pt->wYear % 100) / 10) + '0';
- *dp++ = (char)((int)pt->wYear % 10) + '0';
- sp += 2;
- }
- else if(*sp == 'm')
- {
- if(*(sp + 1) == 'm' && *(sp + 2) == 'm')
- {
- *dp++ = MonthEng[pt->wMonth-1][0];
- *dp++ = MonthEng[pt->wMonth-1][1];
- *dp++ = MonthEng[pt->wMonth-1][2];
- sp += 3;
- }
- else
- {
- if(*(sp + 1) == 'm')
- {
- *dp++ = (char)((int)pt->wMonth / 10) + '0';
- sp += 2;
- }
- else
- {
- if(pt->wMonth > 9)
- *dp++ = (char)((int)pt->wMonth / 10) + '0';
- sp++;
- }
- *dp++ = (char)((int)pt->wMonth % 10) + '0';
- }
- }
- else if(*sp == 'd')
- {
- if(*(sp + 1) == 'd' && *(sp + 2) == 'd')
- {
- *dp++ = YobiEng[pt->wDayOfWeek][0];
- *dp++ = YobiEng[pt->wDayOfWeek][1];
- *dp++ = YobiEng[pt->wDayOfWeek][2];
- sp += 3;
- }
- else
- {
- if(*(sp + 1) == 'd')
- {
- *dp++ = (char)((int)pt->wDay / 10) + '0';
- sp += 2;
- }
- else
- {
- if(pt->wDay > 9)
- *dp++ = (char)((int)pt->wDay / 10) + '0';
- sp++;
- }
- *dp++ = (char)((int)pt->wDay % 10) + '0';
- }
- }
- else if(*sp == 'a' && *(sp + 1) == 'a' && *(sp + 2) == 'a')
- {
- *dp++ = YobiJpn[pt->wDayOfWeek][0];
- *dp++ = YobiJpn[pt->wDayOfWeek][1];
- sp += 3;
- }
- else if(*sp == 'h')
- {
- int hour;
- hour = pt->wHour;
- if(bHour12)
- {
- if(hour > 12) hour -= 12;
- else if(hour == 0) hour = 12;
- }
- if(*(sp + 1) == 'h')
- {
- *dp++ = (char)(hour / 10) + '0';
- sp += 2;
- }
- else
- {
- if(hour > 9)
- *dp++ = (char)(hour / 10) + '0';
- sp++;
- }
- *dp++ = (char)(hour % 10) + '0';
- }
- else if(*sp == 'n')
- {
- if(*(sp + 1) == 'n')
- {
- *dp++ = (char)((int)pt->wMinute / 10) + '0';
- sp += 2;
- }
- else
- {
- if(pt->wMinute > 9)
- *dp++ = (char)((int)pt->wMinute / 10) + '0';
- sp++;
- }
- *dp++ = (char)((int)pt->wMinute % 10) + '0';
- }
- else if(*sp == 's')
- {
- if(*(sp + 1) == 's')
- {
- *dp++ = (char)((int)pt->wSecond / 10) + '0';
- sp += 2;
- }
- else
- {
- if(pt->wSecond > 9)
- *dp++ = (char)((int)pt->wSecond / 10) + '0';
- sp++;
- }
- *dp++ = (char)((int)pt->wSecond % 10) + '0';
- }
- else if(*sp == 'A' && *(sp + 1) == 'M')
- {
- if(*(sp + 2) == '/' &&
- *(sp + 3) == 'P' && *(sp + 4) == 'M')
- {
- if(pt->wHour < 12) *dp++ = 'A';
- else *dp++ = 'P';
- *dp++ = 'M'; sp += 5;
- }
- else if(*(sp + 2) == 'P' && *(sp + 3) == 'M')
- {
- char *p;
- if(pt->wHour < 12) p = sAM; else p = sPM;
- while(*p) *dp++ = *p++;
- sp += 4;
- }
- }
- else if(*sp == 'a' && *(sp + 1) == 'm' && *(sp + 2) == '/' &&
- *(sp + 3) == 'p' && *(sp + 4) == 'm')
- {
- if(pt->wHour < 12) *dp++ = 'a';
- else *dp++ = 'p';
- *dp++ = 'm'; sp += 5;
- }
- else if(*sp == '\\' && *(sp + 1) == 'n')
- {
- *dp++ = 0x0d; *dp++ = 0x0a;
- sp += 2;
- }
- else *dp++ = *sp++;
- }
- *dp = 0;
- }
-
- /*------------------------------------------------
- ü@òbò\Īé¬éáéΘé⌐é╟éñé⌐
- --------------------------------------------------*/
- BOOL IsDispSecond(char* fmt)
- {
- char *sp;
-
- sp = fmt;
- while(*sp)
- {
- if(*sp == '\"')
- {
- sp++;
- while(*sp != '\"' && *sp) sp++;
- if(*sp == '\"') sp++;
- }
- else if(*sp == 's')
- {
- return TRUE;
- }
- else sp++;
- }
- return FALSE;
- }
-