excel有日期"2011-07-16  17:50:50"可是导入php的web页的时候就变成"40740.7436342593"我怎么才能把这个数据导入到mysql(在mysql里面也显示2011-07-16)里面去呢

解决方案 »

  1.   

    php 的时间是从 1970-01-01 00:00:00 开始的
    excel 的时间是从 1900-01-01 00:00:00 开始的
    两者相差天数
    用 php 计算 25566
    用 mysql 计算 25567
    从验证你的数据反推 25569
    我也有点糊涂了,你多验证几组数据就可确定下来40740.7436342593
    整数部分 40740 表示自 1900-01-01 00:00:00 以来的天数
    小数部分 7436342593 表示该时间占全天的比例echo date('Y-m-d H:i:s', (40740.7436342593 - 25569) * 86400);
      

  2.   

    你的excel的日期要加个’号 比如2010-1-1 要改成 ’2010-1-1 这样mysql导入就正常了
      

  3.   

    使用strtotime函数进行转换即可:
    strtotime
    (PHP 4, PHP 5)strtotime — 将任何英文文本的日期时间描述解析为 Unix 时间戳说明
    int strtotime ( string $time [, int $now ] )
    本函数预期接受一个包含美国英语日期格式的字符串并尝试将其解析为 Unix 时间戳(自 January 1 1970 00:00:00 GMT 起的秒数),其值相对于 now 参数给出的时间,如果没有提供此参数则用系统当前时间。 本函数将使用 TZ 环境变量(如果有的话)来计算时间戳。自 PHP 5.1.0 起有更容易的方法来定义时区用于所有的日期/时间函数。此过程在 date_default_timezone_get() 函数页面中有说明。 Note: 如果给定的年份是两位数字的格式,则其值 0-69 表示 2000-2069,70-100 表示 1970-2000。 
    参数time 
    被解析的字符串,格式根据 GNU » 日期输入格式的语法。在 PHP 5.0 之前,time 中不允许有毫秒数,自 PHP 5.0 起可以有但是会被忽略掉。 now 
    用来计算返回值的时间戳。 
    返回值
    成功则返回时间戳,否则返回 FALSE。在 PHP 5.1.0 之前本函数在失败时返回 -1。 更新日志
    版本 说明 
    5.1.0 失败时返回 FALSE,不再是 -1。  
    范例Example #1 strtotime() 例子<?php
    echo strtotime("now"), "\n";
    echo strtotime("10 September 2000"), "\n";
    echo strtotime("+1 day"), "\n";
    echo strtotime("+1 week"), "\n";
    echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
    echo strtotime("next Thursday"), "\n";
    echo strtotime("last Monday"), "\n";
    ?> 
    Example #2 失败检查<?php
    $str = 'Not Good';// previous to PHP 5.1.0 you would compare with -1, instead of false
    if (($timestamp = strtotime($str)) === false) {
        echo "The string ($str) is bogus";
    } else {
        echo "$str == " . date('l dS of F Y h:i:s A', $timestamp);
    }
    ?>