两个文件,一个程序,为啥一个能用一个不能?
Sec = Sec + iSec;
不要这么写
可以用t = t.AddSeconds(iSec)
参数超出范围,比如说秒超过59了,月超过12了,等等,调试下。
提示很清楚:小时、分和秒参数描述无法表示的DateTime.
也就是说你的Hour只能0-23,Min只能0-59,Sec只能0-59.超过这个范围时间就不对了。
double Value = StrTime + Strsec / 1000000;//显示时间
//秒数转时间日期
//GMT时间从2000年1月1日开始,先把它作为赋为初值
double Year = 2000, Month = 1, Day = 1;
double Hour = 12, Min = 0, Sec = 0;
//临时变量
double iYear = 0, iDay = 0;
double iHour = 0, iMin = 0, iSec = 0;
//计算文件创建的年份
iYear = Value / (365 * 24 * 60 * 60);
Year = Year + iYear;
//计算文件除创建整年份以外还有多少天
iDay = (Value % (365 * 24 * 60 * 60)) / (24 * 60 * 60);
//把闰年的年份数计算出来
int RInt = 0;
for (int i = 2000; i < Year; i++)
{
if ((i % 4) == 0)
RInt = RInt + 1;
}
//计算文件创建的时间(几时)
iHour = ((Value % (365 * 24 * 60 * 60)) % (24 * 60 * 60)) / (60 * 60);
Hour = Hour + iHour;
//计算文件创建的时间(几分)
iMin = (((Value % (365 * 24 * 60 * 60)) % (24 * 60 * 60)) % (60 * 60)) / 60;
Min = Min + iMin;
//计算文件创建的时间(几秒)
iSec = (((Value % (365 * 24 * 60 * 60)) % (24 * 60 * 60)) % (60 * 60)) % 60;
Sec = Sec + iSec;
DateTime t = new DateTime((int)Year, (int)Month, (int)Day, (int)Hour, (int)Min, (int)Sec);