最近用Excel导入数据库中遇到一些问题,Excel中的时间格式导入到数据库中后,发现变成了时间戳的形式,后来只好写了一个函数将时间戳再次转换成日期的形式。以下是函数内容(Unicode):
//定义结构
struct Time_To_Date
{
int nYear;
int nMonth;
int nDay;
};
//将时间戳类型转换成日期类型
Time_To_Date TimeStampToDate(int nTime)
{
const int arrLeapDay[12] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
const int arrSimpleDay[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
struct Time_To_Date TTDate;
int nYear = 1900;
int nLeap = 0;
do
{
if (((nYear % 4 == 0) && (nYear % 100 != 0)) || (nYear % 400 == 0))
nLeap += 366;
else
nLeap += 365;
nYear++;
} while (nLeap < nTime - 366 - 1); //1899年12月31日--
TTDate.nYear = nYear;
int nMonth_day = nTime - nLeap - 1;
for (int month = 1; month <= 12; month++)
{
if (((TTDate.nYear % 4 == 0) && (TTDate.nYear % 100 != 0)) || (TTDate.nYear % 400 == 0))
{
if (nMonth_day <= arrLeapDay[month - 1])
{
TTDate.nMonth = month;
TTDate.nDay = nMonth_day;
break;
}
nMonth_day -= arrLeapDay[month - 1];
}
else
{
if (nMonth_day <= arrSimpleDay[month - 1])
{
TTDate.nMonth = month;
TTDate.nDay = nMonth_day;
break;
}
nMonth_day -= arrSimpleDay[month - 1];
}
}
return TTDate;
}