易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux源码中的mktime算法解析

  我们知道,从CMOS中读出来的系统时间并不是time_t类型,而是类似于struct tm那样,年月日时分秒是分开存储的。
    那么,要把它转化为系统便于处理的time_t类型,就需要算法进行转换。
    我们都知道我们的公历还是比较复杂的,有大月小月,有闰年非闰年,处理起来会很麻烦。
    但是Linux的源代码仅仅用了短短的几行就完成了这个复杂的转换(Gauss算法),实在令人惊奇。话不多说,先看源代码:
include/linux/time.h

static
inline
unsigned
long
mktime
(
unsigned
int
year,
unsigned
int
mon,
    unsigned
int
day,
unsigned
int
hour,
    unsigned
int
min
,
unsigned
int
sec)
       {
    if
(
0 >
=
(
int
)
(
mon -
=
2)
)
{
/**/
/* 1..12 -> 11,12,1..10 */
         mon +
=
12;
/**/
/* Puts Feb last since it has leap day */
         year -
=
1;
    }
    return
(
(
(
             (
unsigned
long
)
(
year/
4 -
year/
100 +
year/
400 +
367*
mon/
12 +
day)
+
             year*
365 -
719499
          )
*
24 +
hour /**/
/* now have hours */
       )
*
60 +
min
/**/
/* now have minutes */
    )
*
60 +
sec;
/**/
/* finally seconds */
}
看上去令人眼花缭乱,毫无头绪。下面就让我们对该算法作具体的分析。
    先不看前面的,直接看return那句,该式整体上具有这样的结构:
        T = ((X * 24 + hour) * 60 + min) * 60 + sec
    这说明该算法是先算出从1970年1月1日开始的天数X,再进而求出具体的时间值T的。
 


相关文档:

s3c2410平台下linux四键按键驱动程序

#ifndef __KERNEL__
#define __KERNEL__
#endif
#ifndef MODULE
#define MODULE
#endif
#include<linux/config.h>
#include<linux/module.h>
#include<linux/version.h>
#include<linux/init.h>
#include<linux/kernel.h>
#include<linux/errno.h>
#include<linux/sche ......

LINUX使用记录

-------------------------------------------------------------------------------------------------------
By:yuyongbao
QQ:673360056
1、  linux下共享文件。安装smbserver。然后在《系统设置》中打开《服务器设置》的《smb server》服务器,输入相关路径即可。然后在window中,使用网络邻居查找linux。(注 ......

Linux下用Busy Box制作Ramdisk全过程

  -------------------------------------------------------------------------------------------------------
//By:yuyongbao
//QQ:673360056
Linux下用Busy Box制作Ramdisk全过程
1 建立根文件系统结构
#mkdir rootfs
#cd rootfs
#mkdir bin dev etc lib proc sbin tmp usr var
#chmod 1777 tmp
#mk ......

让Solaris和Linux一样多彩


在Solaris上面工作有几个不方便地方:
一个是ls不能按照文件类型显示颜色;
另一个是VI也不能显现语法色彩;
这里就来说明如何解决这两个问题:
其实这两个问题都是Solaris自身所带的ls和vi版本的问题;
所以解决办法就是下载最新的ls和vim源文件包重新编译进行安装,看上去好像挺麻烦,其实就几步,很简单的:
最新的ls是在 ......

轻型Linux大放光彩






<!--
@page { margin: 2cm }
P { margin-bottom: 0.21cm }
-->
         
Linux
世界很精彩,令人眼花缭乱。近期以来,各种轻型
Linux
版本不断登台亮相,知名的
Puppy
(小狗之名)便是一例。何故?
 
     ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号