闲着无事,用VC进行了简单的编程。
#include "stdafx.h"
#define YYearMinute (366*24*60)
#define NYearminute (365*24*60)
#define Month31 (31*24*60)
#define Month30 (30*24*60)
#define Month28 (28*24*60)
#define Month29 (29*24*60)
#define Day (24*60)
#define Hour 60
unsigned long tminute = 65230;
unsigned char TIME_BCD[6];
void get_bcdtime()
{
int i = 1;
int left=tminute;
char flag ='N';
//get year
while ( left >= NYearminute ){
//it is better using a function to check if the year is a leap year or not
if ( (TIME_BCD[0]==0x00) || (TIME_BCD[0]==0x04) || (TIME_BCD[0]==0x08) ){
flag ='Y';
if (left>=YYearMinute){
left = left - YYearMinute;
}
else break;
}
else{
left = left - NYearminute;
flag ='N';
}
TIME_BCD[0]=TIME_BCD[0]+0x01;
}
//get month
for (;i<=12;i++){
if ( (left>=Month30) || (left>=Month31) ){
if ( (i==1) || (i==3) || (i==5) || (i==7) || (i==8) || (i==10) || (i==12) ){
left = left - Month31;
}
else if ( i==2 ){
flag=='Y' ? (left=left-Month29):(left=left-Month28);
}
else{
left = left - Month30;
}
TIME_BCD[1]=TIME_BCD[1]+0x01;
}
else break;
}
//get day
while(left>=Day){
left = left - Day;
TIME_BCD[2]=TIME_BCD[2]+0x01;
}
//get hour
while(left>=Hour){
left = left - Hour;
TIME_BCD[3]=TIME_BCD[3]+0x01;
}
//get minute
TIME_BCD[4]=left;
}
void main(){
TIME_BCD[0]=0x00;
TIME_BCD[1]=0x01;
TIME_BCD[2]=0x01;
TIME_BCD[3]=0x00;
TIME_BCD[4]=0x00;
TIME_BCD[5]=0x00;
get_bcdtime();
printf("20%02d-%02d-%02d %02d:%02d:00", TIME_BCD[0],TIME_BCD[1],TIME_BCD[2],TIME_BCD[3],TIME_BCD[4]);
}
|