4 * Revision 1.1 2001/04/04 05:43:37 wang
5 * First commit: compiles on Linux, Amiga, Windows, Windows CE, generic gcc
7 * Revision 1.3 2000/10/09 07:17:19 bnv
8 * Corrected the year format
10 * Revision 1.2 1999/11/26 09:53:28 bnv
11 * Added Windows CE support
13 * Revision 1.1 1998/07/02 17:17:00 bnv
28 static BYTE month_days
[12] = {
29 31, 28, 31, 30, 31, 30,
30 31, 31, 30, 31, 30, 31
33 /* ---- day of year ---- */
35 day_of_year(LPSYSTEMTIME time
)
38 /* fix the february */
39 if ((time
->wYear
%4==0) && (time
->wYear
%400 != 0))
43 for (m
=1; m
<time
->wMonth
; m
++)
49 static TCHAR
*WeekDays
[] = {
50 TEXT("Sunday"), TEXT("Monday"), TEXT("Tuesday"), TEXT("Wednesday"),
51 TEXT("Thursday"), TEXT("Friday"), TEXT("Saturday") };
53 static TCHAR
*months
[] = {
54 TEXT("January"), TEXT("February"), TEXT("March"),
55 TEXT("April"), TEXT("May"), TEXT("June"),
56 TEXT("July"), TEXT("August"), TEXT("September"),
57 TEXT("October"), TEXT("November"), TEXT("December") };
59 /* ----------------- Ldate ------------------ */
61 Ldate( const PLstr datestr
, char option
)
63 static TCHAR
*fmt
= TEXT("%02d/%02d/%02d");
64 static TCHAR
*iso
= TEXT("%4d%02d%02d");
76 option
= l2u
[(byte
)option
];
77 Lfx(datestr
,30); LZEROSTR(*datestr
);
81 tmdata
= localtime(&now
) ;
89 length
= tmdata
->tm_yday
+ 1 +
90 (long)(((float)tmdata
->tm_year
-1)*365.25) + 365 ;
91 sprintf(LSTR(*datestr
),"%ld",length
) ;
93 length
= day_of_year(&time
) +
94 (long)(((float)time
.wYear
%100-1)*365.25) + 365;
95 swprintf(buf
,TEXT("%ld"),length
) ;
101 sprintf(LSTR(*datestr
), "%d", tmdata
->tm_yday
+1) ;
103 swprintf(buf
, TEXT("%d"), day_of_year(&time
)) ;
109 sprintf(LSTR(*datestr
), fmt
, tmdata
->tm_mday
,
110 tmdata
->tm_mon
+1, tmdata
->tm_year
%100) ;
112 swprintf(buf
, fmt
, time
.wDay
,
113 time
.wMonth
, time
.wYear
%100) ;
119 sprintf(LSTR(*datestr
),"%02d%03d",
120 tmdata
->tm_year
%100, tmdata
->tm_yday
+1);
122 swprintf(buf
,TEXT("%02d%03d"),
123 time
.wYear
%100, day_of_year(&time
));
129 STRCPY(LSTR(*datestr
),months
[tmdata
->tm_mon
]);
131 wcscpy(buf
,months
[time
.wMonth
-1]);
137 chptr
= months
[tmdata
->tm_mon
] ;
138 sprintf(LSTR(*datestr
),"%d %c%c%c %4d",
139 tmdata
->tm_mday
, chptr
[0], chptr
[1],
140 chptr
[2], tmdata
->tm_year
+1900) ;
142 chptr
= months
[time
.wMonth
-1] ;
143 swprintf(buf
,TEXT("%d %c%c%c %4d"),
144 time
.wDay
, chptr
[0], chptr
[1],
145 chptr
[2], time
.wYear
) ;
151 sprintf(LSTR(*datestr
), fmt
, tmdata
->tm_year
%100,
152 tmdata
->tm_mon
+1, tmdata
->tm_mday
);
154 swprintf(buf
, fmt
, time
.wYear
%100,
155 time
.wMonth
, time
.wDay
);
161 sprintf(LSTR(*datestr
), iso
, tmdata
->tm_year
+1900,
162 tmdata
->tm_mon
+1, tmdata
->tm_mday
) ;
164 swprintf(buf
, iso
, time
.wYear
,
165 time
.wMonth
, time
.wDay
) ;
171 sprintf(LSTR(*datestr
), fmt
, tmdata
->tm_mon
+1,
172 tmdata
->tm_mday
, tmdata
->tm_year
%100 ) ;
174 swprintf(buf
, fmt
, time
.wMonth
,
175 time
.wDay
, time
.wYear
%100 ) ;
181 STRCPY(LSTR(*datestr
),WeekDays
[tmdata
->tm_wday
]);
183 wcscpy(buf
, WeekDays
[time
.wDayOfWeek
]);
188 Lerror(ERR_INCORRECT_CALL
,0);
191 LLEN(*datestr
) = STRLEN(LSTR(*datestr
));
193 wcstombs(LSTR(*datestr
),buf
,LLEN(*datestr
)=wcslen(buf
));