FmtTime.c++
上传用户:weiyuanprp
上传日期:2020-05-20
资源大小:1169k
文件大小:2k
- /* $Id: FmtTime.c++,v 1.3 2007/12/11 20:16:50 faxguy Exp $ */
- /*
- * Copyright (c) 1990-1996 Sam Leffler
- * Copyright (c) 1991-1996 Silicon Graphics, Inc.
- * HylaFAX is a trademark of Silicon Graphics
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
- #include <time.h>
- /*
- * Convert a time_t to a compact printable
- * ``HH:MM:SS'' string. Note that time values
- * are expected to not overflow this range;
- * if they do, the ``upper part'' of the value
- * is discarded.
- */
- const char*
- fmtTime(time_t t)
- {
- static char tbuf[10];
- const char* digits = "0123456789";
- char* cp = tbuf;
- long v;
- if (t < 0)
- return ("0:00:00");
- if (t > 365*24*60*60)
- return ("??:??:??");
- v = t/3600;
- if (v >= 1000)
- *cp++ = digits[v / 1000];
- if (v >= 100)
- *cp++ = digits[(v % 1000) / 100];
- if (v >= 10)
- *cp++ = digits[((v % 1000) % 100) / 10];
- *cp++ = digits[((v % 1000) % 100) % 10];
- *cp++ = ':';
- t -= v*3600;
- v = t/60;
- *cp++ = digits[v / 10];
- *cp++ = digits[v % 10];
- t -= v*60;
- *cp++ = ':';
- *cp++ = digits[t / 10];
- *cp++ = digits[t % 10];
- *cp = ' ';
- return tbuf;
- }