1635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/* 2635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Copyright (C) 2006 Apple Computer, Inc. All rights reserved. 3635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Copyright (C) 2008 Google Inc. All rights reserved. 4635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * 5635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Redistribution and use in source and binary forms, with or without 6635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * modification, are permitted provided that the following conditions are 7635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * met: 8635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * 9635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * * Redistributions of source code must retain the above copyright 10635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * notice, this list of conditions and the following disclaimer. 11635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * * Redistributions in binary form must reproduce the above 12635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * copyright notice, this list of conditions and the following disclaimer 13635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * in the documentation and/or other materials provided with the 14635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * distribution. 15635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * * Neither the name of Google Inc. nor the names of its 16635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * contributors may be used to endorse or promote products derived from 17635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * this software without specific prior written permission. 18635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * 19635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project */ 31635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 32635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#ifndef CurrentTime_h 33635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#define CurrentTime_h 34635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 35643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include <time.h> 36643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 37635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projectnamespace WTF { 38635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 392fc2651226baac27029e38c9d6ef883fa32084dbSteve Block// Returns the current UTC time in seconds, counted from January 1, 1970. 402fc2651226baac27029e38c9d6ef883fa32084dbSteve Block// Precision varies depending on platform but is usually as good or better 412fc2651226baac27029e38c9d6ef883fa32084dbSteve Block// than a millisecond. 422fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockdouble currentTime(); 43635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 442fc2651226baac27029e38c9d6ef883fa32084dbSteve Block// Same thing, in milliseconds. 452fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockinline double currentTimeMS() 462fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 472fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return currentTime() * 1000.0; 482fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 49643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 502fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockinline void getLocalTime(const time_t* localTime, struct tm* localTM) 512fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 522fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#if COMPILER(MSVC7_OR_LOWER) || COMPILER(MINGW) || OS(WINCE) 532fc2651226baac27029e38c9d6ef883fa32084dbSteve Block *localTM = *localtime(localTime); 542fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#elif COMPILER(MSVC) 552fc2651226baac27029e38c9d6ef883fa32084dbSteve Block localtime_s(localTM, localTime); 562fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#else 572fc2651226baac27029e38c9d6ef883fa32084dbSteve Block localtime_r(localTime, localTM); 582fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#endif 592fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 60643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 61635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project} // namespace WTF 62635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 63635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projectusing WTF::currentTime; 64a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochusing WTF::currentTimeMS; 655e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Blockusing WTF::getLocalTime; 66635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 67635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#endif // CurrentTime_h 68635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 69