$t = gettimeofday();
echo date('Y-m-d H:i:s.', $t['sec']).$t['usec'];

解决方案 »

  1.   

    这个貌似很容易吧。
    不是直接用date就可以了吗?
    <?
    function format_mt($microtime)
    {
        $r_str="";
        $microtime="".$microtime;
        $mt=explode(" ",$microtime);
        $r_str.=date("Y-m-d H:i:s.",0+$mt[1]);
    $r_str.=$mt[0]*100000000;
        return $r_str;
    }
    $m_t="0.68868800 1164435534";
    echo format_mt($m_t);
    ?>输出:
    2006-11-25 06:18:54.68868800
      

  2.   

    如果用 microtime() 函数,则
    list($usec, sec) = explode(' ', microtime());
    echo date('Y-m-d H:i:s', $sec).substr($usec, 1);
      

  3.   

    但是有一个问题:就是 先 microtime(),再 date() 取得的时间很有可能不致!
    个人认为应该从 microtime() 后取得的值 0.68868800 1164435534 思考
    如何把整数 1164435534 变成 2006-11-25 14:18:54
      

  4.   

    胡说!
    date 函数的第二个参数缺省时,则取当前时间。否则就是传入的时间戳
      

  5.   

    唠叨说的是对的,勇者威廉说的有问题……saga104()的函数有问题,这个要自己看下了不过我实在是有点不明白这个啊如果用 microtime() 函数,则
    list($usec, sec) = explode(' ', microtime());
    echo date('Y-m-d H:i:s', $sec).substr($usec, 1);手册里面好像没有使用list ($usec,sec)这样的形势啊~只有list($usec,$sec)的形势啊以下是关于date的说明:
    返回值的字符串依配置的格式来决定。若有传入时间戳记值,则将时间戳记格式化返回;若无传入时间戳记值,则将目前服务器的时间格式化返回。要将日期转为其它的语系格式,应使用setlocale() 及 strftime() 二个函数。字符串格式化的选项如下:
    a - "am" 或是 "pm" 
    A - "AM" 或是 "PM" 
    d - 几日,二位数字,若不足二位则前面补零; 如: "01" 至 "31" 
    D - 星期几,三个英文字母; 如: "Fri" 
    F - 月份,英文全名; 如: "January" 
    h - 12 小时制的小时; 如: "01" 至 "12" 
    H - 24 小时制的小时; 如: "00" 至 "23" 
    g - 12 小时制的小时,不足二位不补零; 如: "1" 至 12" 
    G - 24 小时制的小时,不足二位不补零; 如: "0" 至 "23" 
    i - 分钟; 如: "00" 至 "59" 
    j - 几日,二位数字,若不足二位不补零; 如: "1" 至 "31" 
    l - 星期几,英文全名; 如: "Friday" 
    m - 月份,二位数字,若不足二位则在前面补零; 如: "01" 至 "12" 
    n - 月份,二位数字,若不足二位则不补零; 如: "1" 至 "12" 
    M - 月份,三个英文字母; 如: "Jan" 
    s - 秒; 如: "00" 至 "59" 
    S - 字尾加英文序数,二个英文字母; 如: "th","nd" 
    t - 指定月份的天数; 如: "28" 至 "31" 
    U - 总秒数 
    w - 数字型的星期几,如: "0" (星期日) 至 "6" (星期六) 
    Y - 年,四位数字; 如: "1999" 
    y - 年,二位数字; 如: "99" 
    z - 一年中的第几天; 如: "0" 至 "365" 
    其它不在上列的字符则直接列出该字符。 
      

  6.   

    To: li1229363
      我又看了一遍 PHP 文档资料,在 date() 函数中并没有微秒的参数。我想要的不过是一个有日期、时间和微秒的值,仅此而已。
      使用 microtime() 函数,取得的值:0.68868800 1164435534。0.68868800表示的是微秒,而1164435534表示的是 2006-11-25 14:18:54。
      所以我才有将 1164435534 转换成 2006-11-25 14:18:54 格式的想法。To:saga104
      大家在这都是讨论问题、分析问题、解决问题的,有问题说嘛,不要骂人。现在天气干燥,火气不要那么大,容易引起火灾哦!  ;)
      

  7.   

    To: xuzuning(唠叨)$t = gettimeofday();
    echo date('Y-m-d H:i:s.', $t['sec']).$t['usec'];执行完 gettimeofday() 后,再执行 date() ,会存在时间差的问题,如何解决这个问题?
      

  8.   

    你指的“时间差”是什么?
    输出的是 gettimeofday() 时刻的时间,难道不对吗?
      

  9.   

    呵呵,支持 唠叨
    帮我解决过不少难题勇者威廉不要总是去想date,多关注一下gettimeofday()
      

  10.   

    To:xuzuning(唠叨)“时间差”是指先执行 gettimeofday() 函数,获得一个时间值(如:2006-11-29 00:00:00);再执行 date() 函数,又获得一个值          (如:2006-11-29 00:00:01),再个值之间存在的差异。
      

  11.   

    不会出现这种情况,因为date里的输入时间是先前用gettimeofday() 函数取得的时间
      

  12.   

    呵呵,原来是理解错了。date() 取得是 gettimeofday() 里的值。