* Copyright (C) 2008 mymtom ()
* All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * $Id: src/lib/libtrace/gettimeofday.c,v 1.1 2008/03/28 12:08:44 mymtom Exp $ */#include <time.h>
#ifdef WIN32# include <windows.h>#else# include <sys/time.h>#endif#ifdef WIN32
intgettimeofday(struct timeval *tp, void *tzp){ time_t clock; struct tm tm; SYSTEMTIME wtm;GetLocalTime(&wtm);
tm.tm_year = wtm.wYear - 1900; tm.tm_mon = wtm.wMonth - 1; tm.tm_mday = wtm.wDay; tm.tm_hour = wtm.wHour; tm.tm_min = wtm.wMinute; tm.tm_sec = wtm.wSecond; tm. tm_isdst = -1; clock = mktime(&tm); tp->tv_sec = clock; tp->tv_usec = wtm.wMilliseconds * 1000;return (0);
}#endif
#include <stdio.h>
#include <stdlib.h>#include <time.h>#include "gettimewin.h"#ifdef WIN32
# include <windows.h>#else# include <sys/time.h>#endifint gettimeofday(struct timeval *tp, void *tzp);
#if defined(_MSC_VER) && !defined(snprintf)
#define snprintf _snprintf#endifint main(int argc, char *argv[])
{ struct timeval tv; char buf[] = "1970-01-01 00:00:00.000"; struct tm *newtime; char log_name[128]; char log_time[128]; time_t lt; time(<); newtime = localtime(<); strftime( log_name, 128, "%Y%m%d", newtime); strftime( log_time,128,"%Y-%m-%d %H:%M:%S",newtime); printf("%s\n", log_name); printf("%s\n", log_time); (void)gettimeofday(&tv, 0); newtime = localtime(&(time_t(tv.tv_sec))); (void)strftime(buf, sizeof(buf) - 1, "%Y-%m-%d %H:%M:%S.000", (localtime(&tv.tv_sec))); (void)snprintf(buf + 20, 3, "%03d", (int)(tv.tv_usec / 1000)); (void)printf("%s\n", buf); return (0);}http://blog.sina.com.cn/s/blog_48526a5f0100iqyn.html