面试题:根据Unix时间戳计算时间
生活随笔
收集整理的這篇文章主要介紹了
面试题:根据Unix时间戳计算时间
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
根據(jù)Unix時(shí)間戳計(jì)算時(shí)間,不分年月大小,每月三十天,每年按360天計(jì)算。開(kāi)始時(shí)間1970/01/01 00:00:00,輸入秒數(shù),顯示時(shí)間
思路一:進(jìn)位,60秒進(jìn)1分鐘,60分進(jìn)1小時(shí),24小時(shí)進(jìn)1天,30天進(jìn)1月,12月進(jìn)1年,依次建立循環(huán) 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;// 考慮使用計(jì)數(shù)思想,秒合法,則算出了最終時(shí)間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; }測(cè)試:
void test() {cout<< CalculationDate(10)<<endl;cout<< CalculationDate(12345678)<<endl;cout<< CalculationDate_OP(10)<<endl;cout<< CalculationDate_OP(12345678)<<endl; }總結(jié)
以上是生活随笔為你收集整理的面试题:根据Unix时间戳计算时间的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ESP8266开发之旅 应用篇② OLE
- 下一篇: 下单账号与支付账号不一致_如何申请企业支