FmtTime.c++
上传用户:weiyuanprp
上传日期:2020-05-20
资源大小:1169k
文件大小:2k
源码类别:

传真(Fax)编程

开发平台:

C/C++

  1. /* $Id: FmtTime.c++,v 1.3 2007/12/11 20:16:50 faxguy Exp $ */
  2. /*
  3.  * Copyright (c) 1990-1996 Sam Leffler
  4.  * Copyright (c) 1991-1996 Silicon Graphics, Inc.
  5.  * HylaFAX is a trademark of Silicon Graphics
  6.  *
  7.  * Permission to use, copy, modify, distribute, and sell this software and 
  8.  * its documentation for any purpose is hereby granted without fee, provided
  9.  * that (i) the above copyright notices and this permission notice appear in
  10.  * all copies of the software and related documentation, and (ii) the names of
  11.  * Sam Leffler and Silicon Graphics may not be used in any advertising or
  12.  * publicity relating to the software without the specific, prior written
  13.  * permission of Sam Leffler and Silicon Graphics.
  14.  * 
  15.  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
  16.  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
  17.  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
  18.  * 
  19.  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
  20.  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
  21.  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
  22.  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
  23.  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
  24.  * OF THIS SOFTWARE.
  25.  */
  26. #include <time.h>
  27. /*
  28.  * Convert a time_t to a compact printable
  29.  * ``HH:MM:SS'' string.  Note that time values
  30.  * are expected to not overflow this range;
  31.  * if they do, the ``upper part'' of the value
  32.  * is discarded.
  33.  */
  34. const char*
  35. fmtTime(time_t t)
  36. {
  37.     static char tbuf[10];
  38.     const char* digits = "0123456789";
  39.     char* cp = tbuf;
  40.     long v;
  41.     if (t < 0)
  42. return ("0:00:00");
  43.     if (t > 365*24*60*60)
  44. return ("??:??:??");
  45.     v = t/3600;
  46.     if (v >= 1000)
  47. *cp++ = digits[v / 1000];
  48.     if (v >= 100)
  49. *cp++ = digits[(v % 1000) / 100];
  50.     if (v >= 10)
  51. *cp++ = digits[((v % 1000) % 100) / 10];
  52.     *cp++ = digits[((v % 1000) % 100) % 10];
  53.     *cp++ = ':';
  54.     t -= v*3600;
  55.     v = t/60;
  56.     *cp++ = digits[v / 10];
  57.     *cp++ = digits[v % 10];
  58.     t -= v*60;
  59.     *cp++ = ':';
  60.     *cp++ = digits[t / 10];
  61.     *cp++ = digits[t % 10];
  62.     *cp = '';
  63.     return tbuf;
  64. }