本机保存的cookie文件里的时间格式是windows格式的。windows的时间是从1601年开始的100纳秒数, 
Unix 时间从 1970-01-01 00:00:00 开始计算。
Win32 FileTime 时间从 1601-01-01 00:00:00 开始计算下面的问题有人在java板块发过,我用那里的算法,发现php无法计算64bit的整数。
返回不了任何结果。
java板块的帖子
http://topic.csdn.net/u/20090420/11/8016744d-d151-4041-a837-5a14f2592e3f.html
FileTIME
时间低位:1907785472
时间高位:30089218对应 Date为:2010-7-10 15:35:18
请问如何把2010-7-10 15:35:18转换成  
FileTIME
时间低位:1907785472
时间高位:30089218以及
如何把
FileTIME
时间低位:1907785472
时间高位:30089218
转换成
 Date为:2010-7-10 15:35:18

解决方案 »

  1.   

    没弄过,不过,可不可以先输出,再存,中间转化下。
    头像真给力,wow很h啊
      

  2.   

    恩。。我老干些费力的事。。又想半天,闰年一开始没算对啊~~哎
    date_default_timezone_set(PRC);
    function turnyear($a,$b){
    $count=0;
    for($i=$a;$i<$b;$i++)
    {
    if($i%400==0){
    $count++;
    continue;
    }
    if($i%4==0 && $i%100!=0){
    $count++;
    continue;
    }
    }
    return $count;
    }
    $ext=(369*365+turnyear(1601,1970))*24*3600/pow(2,32);
    $high=(30089218/10000000);
    $high=$high-$ext;
    $low=(1907785472/10000000);
    $time=$high*pow(2,32)+$low;
    echo date('Y-m-d H:i:s',$time);
      

  3.   

    $interval=0-strtotime('1601-01-01');//1601的秒数,因为早于1970,因此是个负数,用0减得正数 
    $time1= (30122779 << 32); //高位
    echo $time1 ."<br>\n";
    $time1+=1210364416;//高低位合并,得到自1601年以来的"100纳秒"数 = 0.1微秒
    $time1/=10;//得到微秒
    $time1/=1000;//得到毫秒
    $time1/=1000;//得到秒
    $d=Date("Y-m-d H:i:s",$time1-$interval);//interval是1601-1970年之间的毫秒数
      

  4.   

    php read 本机cookie
    php解析cookie文件
    php解析ie cookie文件
    php parse ie的cookie文件
    php read ie的cookie补几个关键字,方便后来的同学搜到。
      

  5.   

    你没有验证过的么?
    1601到1970的秒数会超过32位的,php里没有能够表示这个数的整型变量啊~~
      

  6.   

    我想到的算法
    //echo 410*86400*365; //12929760000
    //高位要 <<32 ,这个表示的是 100ns单位,如果我们只要求秒的单位,那么就可以在<<32中去掉一些位
    //计算1601年到2010年,发现秒的数字长度还没有超出php的范围。
    $xc = $ysxc = 10000000;$n=32;
    for ($i=32;$i>0 ;$i-- )
    {
    echo "$xc" ."=$i\n";
    $mod+=$xc%2;//2的模只能是0和1
    $xc=intval($xc/2);
    echo $xc  ."=$i=模$mod\n";
    }$bit = 30122779; 
    print "$bit << 8 == " . ($bit << 11) . $prod . "\n"; 
      

  7.   

    php大数运算有两个库
    1) bc库,以bc_为前缀的一系列函数,功能较少,默认自带
    2)gmp库,以gmp_为前缀的一系列函数,功能较多,需要安装。
      

  8.   

    恩,你用php就不要去想64位的
    ps:咱在3楼已经写出来了好吗?干嘛非要整合到一个数里再计算?直接操作时间高位呗,减去1601到1970的时间秒数,再加上时间低位不就哦了?
      

  9.   


    //100ns 到 1秒的倍数
    $xc = $ysxc = 10000000;//2的32次方
    $two32=2;
    $n=32;
    for ($i=0;$i<31 ;$i++ )
    {
    $two32*=2;
    }
    echo $two32 ."\n";
    $sec=$two32/$xc; //2的32次方 处以100ns和1秒的差值
    echo $sec ."<br>\n";$high = 30122779;
    $low=1210364416;//print "$bit << 11 == " . ($bit << 11) . $prod . "\n"; $h=$high*$sec; //高位纳秒转化为秒
    echo $h ."<br>\n";
    $lowsec=1210364416/$xc; //低位纳秒转化为秒
    $tm=$h+$lowsec; //相加就是最终结果秒echo date('Y-m-d H:i:s',$tm); //不对啊,我晕死了
    exit;