localtime_r的实现
来源:互联网 发布:java 微信发送消息 编辑:程序博客网 时间:2024/04/27 04:42
在ubuntu14.10 64位上测试通过
#include <stdio.h>#include <time.h>#include <stdlib.h>#include <fstream>#include <string>#include <iostream>#include <sstream> //要使用stringstream流应包含此头文件//my_localtime_r转自(http://blog.csdn.net/yaxf999/article/details/8136712)struct tm * my_localtime_r(const time_t *srctime,struct tm *tm_time){ long int n32_Pass4year,n32_hpery; // 每个月的天数 非闰年 const static char Days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // 一年的小时数 const static int ONE_YEAR_HOURS = 8760; // 365 * 24 (非闰年) //计算时差8*60*60 固定北京时间 time_t time = *srctime; time=time+28800; tm_time->tm_isdst=0; if(time < 0) { time = 0; } //取秒时间 tm_time->tm_sec=(int)(time % 60); time /= 60; //取分钟时间 tm_time->tm_min=(int)(time % 60); time /= 60; //计算星期 tm_time->tm_wday=(time/24+4)%7; //取过去多少个四年,每四年有 1461*24 小时 n32_Pass4year=((unsigned int)time / (1461L * 24L)); //计算年份 tm_time->tm_year=(n32_Pass4year << 2)+70; //四年中剩下的小时数 time %= 1461L * 24L; //计算在这一年的天数 tm_time->tm_yday=(time/24)%365; //校正闰年影响的年份,计算一年中剩下的小时数 for (;;) { //一年的小时数 n32_hpery = ONE_YEAR_HOURS; //判断闰年 if ((tm_time->tm_year & 3) == 0) { //是闰年,一年则多24小时,即一天 n32_hpery += 24; } if (time < n32_hpery) { break; } tm_time->tm_year++; time -= n32_hpery; } //小时数 tm_time->tm_hour=(int)(time % 24); //一年中剩下的天数 time /= 24; //假定为闰年 time++; //校正润年的误差,计算月份,日期 if ((tm_time->tm_year & 3) == 0) { if (time > 60) { time--; } else { if (time == 60) { tm_time->tm_mon = 1; tm_time->tm_mday = 29; return tm_time; } } } //计算月日 for (tm_time->tm_mon = 0;Days[tm_time->tm_mon] < time;tm_time->tm_mon++) { time -= Days[tm_time->tm_mon]; } tm_time->tm_mday = (int)(time); return tm_time;}int main(){ char tmp[25] = {0}; time_t tt = time(NULL);//这句返回的只是一个时间cuo cout<<"time: "<<tt<<endl; tm t; my_localtime_r(&tt,&t); sprintf(tmp,"%d-%02d-%02d %02d:%02d:%02d\t", t.tm_year + 1900, t.tm_mon + 1, t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec); cout<<tmp<<endl; return 0;}
0 0
- localtime_r的替代实现
- localtime_r的实现
- localtime_r的替代实现
- localtime与localtime_r的区别
- localtime、localtime_s、localtime_r的使用
- localtime与localtime_r的区别
- localtime 和 localtime_r的区别
- time(), time_t, localtime(), localtime_r()的理解和用法
- gmtime、gmtime_r、localtime、localtime_r之间的【差异】及其【特点】
- localtime 和 localtime_r
- localtime 和 localtime_r .
- localtime 和 localtime_r
- localtime 和 localtime_r
- localtime 和 localtime_r
- localtime 和 localtime_r
- localtime 和 localtime_r
- localtime与localtime_r
- localtime与localtime_r
- ci框架hooks使用
- JAVA并发-3种典型的死锁
- linux 文件删除而空间没有释放的解决办法
- Program4_D
- java基础语法练习--输入年月日确定星期几
- localtime_r的实现
- ARM开发板移植lsusb命令
- Android 仿QQListView侧滑删除
- 大数运算——阶乘-40!
- 大整数减法计算思路与算法实现
- js得到url的各个部分
- Android 轻松实现仿淘宝地区选择
- Linux中文显示乱码?如何设置centos显示中文
- 用virtualBox安装centos设置网络和通信