自己写 localtime 函数(含完整注释,代码)

原创 2005年03月04日 11:14:00
自己写 localtime 函数(含完整注释,代码)

//对时间转换有兴趣的可以看看。



//曾在某平台下多线程中使用localtime库函数。可恶的是,每当程序运行
//一段时间后,都要出现内存泄露。查了数个夜晚为什么,无从断定。
//只能狠狠心,自己写了个localtimes,功能与localtime库函数相同。
//有了它以后,我就不再因内存泄露而烦恼了。
//要知道“内存泄露”是程序员大的一大耻辱。

//这个localtimes在多线程下已经运行了3年,还没发生问题,放心使用。

//一年中每个月的天数,非闰年
const char Days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

/*++------------------------------------------------------------------------

  Function:
              localtimes

Modification History

Jurassic           2002.1    Created.              
--------------------------------------------------------------------------*/
void
__stdcall
localtimes(
   time_t time,
   long timezone,
           struct tm *tm_time
)
{
    unsigned  __int32 n32_Pass4year;
              __int32 n32_hpery;

    //计算时差
    time=time-timezone;
    
    if(time < 0)
    {
       time = 0;
    }
    //取秒时间
    tm_time->tm_sec=(int)(time % 60);
    time /= 60;
    //取分钟时间
    tm_time->tm_min=(int)(time % 60);
    time /= 60;
    //取过去多少个四年,每四年有 1461*24 小时
    n32_Pass4year=((unsigned int)time / (1461L * 24L));
    //计算年份
    tm_time->tm_year=(n32_Pass4year << 2)+70;
    //四年中剩下的小时数
    time %= 1461L * 24L;
    //校正闰年影响的年份,计算一年中剩下的小时数
    for (;;)
    {
        //一年的小时数
        n32_hpery = 365 * 24;
        //判断闰年
        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 ;
}
}
    }
    //计算月日
    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;

}

软件编写规范(注释篇)

//摘抄自华为软件编写规范 1、:一般情况下,源程序有效注释量必须在 20 %以上 说明:注释的原则是有助于对程序的阅读理解,在该加的地方都加了,注释不宜太多也不能太少,注释语 言必须准确、...
  • Zzhouzhou237
  • Zzhouzhou237
  • 2017年06月25日 11:35
  • 263

代码规范之在函数之前添加注释

开发中,我们常常要为自己写的函数添加作者、参数的说明等信息,可以采用如下的方式: /** * @author 小明(我的工位a89) * @param name:用户名 * @para...
  • JCY1009015337
  • JCY1009015337
  • 2016年12月22日 19:47
  • 535

C#中给自写函数加提示型注释

VS2005的代码编辑器的提示功能很强,在我们的程序中经常会自己写一些函数,在调用这样的自写函数时如何出现提示呢?        ///              ///   创建数据库。      ...
  • ltolll
  • ltolll
  • 2006年09月08日 14:13
  • 1205

代码注释怎么写

注释怎么写注释的作用是什么?我认为注释最终作用无非就两个。 1.和伪代码一样的作用,为接下来要实现的功能写出一个指导性的算法思路。只是没有伪代码详细。但是也指出了完成此功能的大体算法思路。 ...
  • yuhaiyang457288
  • yuhaiyang457288
  • 2017年05月15日 00:20
  • 906

教你如何使用xcode 生成 自定义注释和API 2

文档化细节 正如你知道的,在Objective-C 和 Swift中写一条注释的最简单办法是用两条斜杠,如下图展示这样: 1 // This ...
  • cga6741011
  • cga6741011
  • 2016年01月21日 15:02
  • 3010

localtime()函数:获取当前时间和日期并转换为本地时间

1. time 函数 返回1970-1-1, 00:00:00以来经过的秒数 原型: time_t time(time_t *calptr) 结果可以通过返回值,也...
  • linux_wgl
  • linux_wgl
  • 2015年03月30日 22:09
  • 14452

写程序实现自己的strcpy() 函数

函数 mystrcpy() 实现了strcpy() ,复制源字符串到目的串,返回一个指向目的串的指针 code #include char *mystrcpy(char *destinatio...
  • robinsongsog
  • robinsongsog
  • 2014年03月21日 18:38
  • 1285

halcon标定代码注解

halcon的标定助手生成的代码注释,部分变量做了全局处理 相机参数初始化 /// /// 相机参数初始化 /// /// 焦距,单位:mm ...
  • LearningAlways
  • LearningAlways
  • 2016年12月12日 20:39
  • 530

关于代码中写注释,你不得不知道的那些事儿

引   程序员圈有一个笑话 最讨厌在写代码的时候写注释, 最讨厌别人的代码里面不写注释 那为啥要写注释呢?    我就以自己的亲身经历和理解开始阐述吧:    这段时间在...
  • JJMM2009
  • JJMM2009
  • 2015年11月20日 10:54
  • 3428

C语言中localtime函数功能及用法

函数名: localtime 功  能: 把日期和时间转变为结构 用  法: struct tm *localtime(long *clock); 程序例: #include #include #...
  • xuefu2008
  • xuefu2008
  • 2009年10月09日 14:42
  • 9781
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:自己写 localtime 函数(含完整注释,代码)
举报原因:
原因补充:

(最多只允许输入30个字)