面试题:根据Unix时间戳计算时间
根据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;
}
面试题:根据Unix时间戳计算时间相关推荐
- Unix时间戳 POSIX时间 Unix时间
时间戳是自 1970 年 1 月 1 日(00:00:00 GMT)以来的秒数,也被称为 Unix 时间戳(Unix Timestamp). Unix时间戳(Unix timestamp),或称Uni ...
- php utc时间_PHP转换UNIX时间戳 UTC时间(TZ格式) 标准时间的方法 UNIX UTC GMT时间、本地时间互转...
在PHP编程中经常会遇到各种不同格式的时间 比如: unix时间戳:1547740800 UTC时间:2019-1-18T00:00:00Z 标准时间:2019-1-18 00:00:00 以上这三个 ...
- php时间戳转utc时间格式,PHP转换UNIX时间戳 UTC时间(TZ格式) 标准时间的方法 UNIX UTC GMT时间、本地时间互转...
在PHP编程中经常会遇到各种不同格式的时间 比如: unix时间戳:1547740800 UTC时间:2019-1-18T00:00:00Z 标准时间:2019-1-18 00:00:00 以上这三个 ...
- Unix时间戳转化时间
因为项目中经常用到Unix时间戳的转化,今天就总结一下 PHP中 这种方式在PHP程序中完成转换,优点是无论是不是数据库中查询获得的数据都能转换,转换范围不受限制,缺点是占用PHP解析器的解析时间,速 ...
- js linux时间戳转时间格式,JS UNIX 时间戳与时间格式转换
resolv.conf 1 这个文件由NetworkManager和network服务共同修改 关闭NetworkManager服务后,修改nameserver和hostname 重启network后 ...
- go 的时间与时间戳计算
unix时间戳 unix时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数. go计算unix 时间戳 timestamp := time.Now().Unix() fmt.Prin ...
- linux元年时间搓,发布基于ANSI-C的RTC_Time库,利用UNIX时间戳格式,无中断实现万年历...
基于STM32处理器 RTC只是个能靠电池维持运行的32位定时器over! 并不像实时时钟芯片,读出来就是年月日... 看过些网上的代码,有利用秒中断,在内存中维持一个年月日的日历. 我觉得,这种方法 ...
- 算法之unix时间戳和UTC时间(年月日)互换
算法之unix时间戳和UTC时间(年月日)互换 author:onceday date:2022年6月8日 文章目录 算法之unix时间戳和UTC时间(年月日)互换 1.c标准库时间结构定义 2.自定 ...
- php 把unix时间转换成时间,php unix时间戳转换成时间的方法
php unix时间戳转换成时间的方法:首先创建一个PHP示例文件:然后通过"date('Y-m-d H:i:s', 1547740800);"方式将指定的unix时间戳转换成时间 ...
最新文章
- OKRS如何进行目标的对齐?
- ETL安装前的准备 - 数据库创建方法
- 【SQL】查询DateTime类型的某一年数据
- android 安装应用程序apk安装不了
- Axios和Ajax处理后台返回文件流实现文件下载(图片和Excel)
- pytorch forward
- python修改图片尺寸
- 凝思系统激活序列号_安装凝思linux操作系统.doc
- 2021爱分析·云计算厂商全景报告
- 安装Pytorch后torch.cuda.is_available()返回False问题解决
- 运行成功但模拟器上没有程序
- 脱虚向实,数说故事联合中山大学正式启动“AI虚拟偶像”研究计划
- 抖音短视频数据抓取实战系列(〇)——前言
- 技术管理者的管理框架
- 组学数据上传(五):代谢组学数据
- Python 获取当前系统时间
- 如何实施开源协议,以及如何遵守开源协议的要求
- python能参加奥赛吗-【家长必读】孩子学编程能参加哪些高含金量的比赛?
- 修复Edge浏览器无法登录微软账户问题
- EasyUi之Dialog(对话框窗口)