个人永久免费自助建站,国家职业资格证书查询,丹东站,郴州网站建设公司简介根据Unix时间戳计算时间#xff0c;不分年月大小#xff0c;每月三十天#xff0c;每年按360天计算。开始时间1970/01/01 00:00:00,输入秒数#xff0c;显示时间
思路一#xff1a;进位#xff0c;60秒进1分钟#xff0c;60分进1小时#xff0c;24小时进1天#xff0…根据Unix时间戳计算时间不分年月大小每月三十天每年按360天计算。开始时间1970/01/01 00:00:00,输入秒数显示时间
思路一进位60秒进1分钟60分进1小时24小时进1天30天进1月12月进1年依次建立循环while (second 60){second - 60;minute 1;if (minute 60){minute 0;hour 1;if (hour 24){hour 0;day 1;if (day 31){day 1;month 1;if (month 13){month 1;year 1;}}}}}
完整代码
string CalculationDate(long long second)
{int year 1970, month 1, day 1;int hour 0, minute 0;// 考虑使用计数思想秒合法则算出了最终时间while (second 60){second - 60;minute 1;if (minute 60){minute 0;hour 1;if (hour 24){hour 0;day 1;if (day 31){day 1;month 1;if (month 13){month 1;year 1;}}}}}char buff[] 1970/01/01 00:00:10;sprintf(buff,%d/%02d/%02d %02d:%02d:%02d, year, month, day, hour, minute, second);return buff;
}
思路二取整一年多少秒一月多少秒以此类推依次取年、月、日....long long minuteSecond 60;long long hourSecond 60*minuteSecond;long long daySecond 24*hourSecond;long long monthSecond 30*daySecond;long long yearSecond 12*monthSecond;
完整代码
string CalculationDate_OP(long long second)
{int year 1970, month 1, day 1;int hour 0, minute 0;// 考虑直接去整的思想long long minuteSecond 60;long long hourSecond 60*minuteSecond;long long daySecond 24*hourSecond;long long monthSecond 30*daySecond;long long yearSecond 12*monthSecond;if (second yearSecond){int x second/yearSecond;year x;second - x*yearSecond;}if (second monthSecond){int x second/monthSecond;month x;second - x*monthSecond;}if (second daySecond){int x second/daySecond;day x;second - x*daySecond;}if (second hourSecond){int x second/hourSecond;hour x;second - x*hourSecond;}if (second minuteSecond){int x second/minuteSecond;minute x;second - x*minuteSecond;}char buff[] 1970/01/01 00:00:10;sprintf(buff,%d/%02d/%02d %02d:%02d:%02d, year, month, day, hour, minute, second);return buff;
}
测试
void test()
{cout CalculationDate(10)endl;cout CalculationDate(12345678)endl;cout CalculationDate_OP(10)endl;cout CalculationDate_OP(12345678)endl;
}