| Index: chrome/browser/sync/notifier/base/time.h
|
| ===================================================================
|
| --- chrome/browser/sync/notifier/base/time.h (revision 0)
|
| +++ chrome/browser/sync/notifier/base/time.h (revision 0)
|
| @@ -0,0 +1,114 @@
|
| +// Copyright (c) 2009 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef CHROME_BROWSER_SYNC_NOTIFIER_BASE_TIME_H_
|
| +#define CHROME_BROWSER_SYNC_NOTIFIER_BASE_TIME_H_
|
| +
|
| +#include <time.h>
|
| +
|
| +#include "talk/base/basictypes.h"
|
| +
|
| +typedef uint64 time64;
|
| +
|
| +#define kMicrosecsTo100ns (static_cast<time64>(10))
|
| +#define kMillisecsTo100ns (static_cast<time64>(10000))
|
| +#define kSecsTo100ns (1000 * kMillisecsTo100ns)
|
| +#define kMinsTo100ns (60 * kSecsTo100ns)
|
| +#define kHoursTo100ns (60 * kMinsTo100ns)
|
| +#define kDaysTo100ns (24 * kHoursTo100ns)
|
| +const time64 kMaxTime100ns = UINT64_C(9223372036854775807);
|
| +
|
| +// Time difference in 100NS granularity between platform-dependent starting
|
| +// time and Jan 1, 1970.
|
| +#ifdef WIN32
|
| +// On Windows time64 is seconds since Jan 1, 1601.
|
| +#define kStart100NsTimeToEpoch (116444736000000000uI64) // Jan 1, 1970 in time64
|
| +#else
|
| +// On Unix time64 is seconds since Jan 1, 1970.
|
| +#define kStart100NsTimeToEpoch (0) // Jan 1, 1970 in time64
|
| +#endif
|
| +
|
| +// Time difference in 100NS granularity between platform-dependent starting
|
| +// time and Jan 1, 1980.
|
| +#define kStart100NsTimeTo1980 \
|
| + kStart100NsTimeToEpoch + UINT64_C(3155328000000000)
|
| +
|
| +#define kTimeGranularity (kDaysTo100ns)
|
| +
|
| +namespace notifier {
|
| +
|
| +// Get the current time represented in 100NS granularity
|
| +// Different platform might return the value since different starting time.
|
| +// Win32 platform returns the value since Jan 1, 1601.
|
| +time64 GetCurrent100NSTime();
|
| +
|
| +// Get the current time represented in 100NS granularity since epoch
|
| +// (Jan 1, 1970).
|
| +time64 GetCurrent100NSTimeSinceEpoch();
|
| +
|
| +// Convert from struct tm to time64.
|
| +time64 TmToTime64(const struct tm& tm);
|
| +
|
| +// Convert from time64 to struct tm.
|
| +bool Time64ToTm(time64 t, struct tm* tm);
|
| +
|
| +// Convert from UTC time to local time.
|
| +bool UtcTimeToLocalTime(struct tm* tm);
|
| +
|
| +// Convert from local time to UTC time.
|
| +bool LocalTimeToUtcTime(struct tm* tm);
|
| +
|
| +// Returns the local time as a string suitable for logging
|
| +// Note: This is *not* threadsafe, so only call it from the main thread.
|
| +char* GetLocalTimeAsString();
|
| +
|
| +// Parses RFC 822 Date/Time format
|
| +// 5. DATE AND TIME SPECIFICATION
|
| +// 5.1. SYNTAX
|
| +//
|
| +// date-time = [ day "," ] date time ; dd mm yy
|
| +// ; hh:mm:ss zzz
|
| +// day = "Mon" / "Tue" / "Wed" / "Thu"
|
| +// / "Fri" / "Sat" / "Sun"
|
| +//
|
| +// date = 1*2DIGIT month 2DIGIT ; day month year
|
| +// ; e.g. 20 Jun 82
|
| +//
|
| +// month = "Jan" / "Feb" / "Mar" / "Apr"
|
| +// / "May" / "Jun" / "Jul" / "Aug"
|
| +// / "Sep" / "Oct" / "Nov" / "Dec"
|
| +//
|
| +// time = hour zone ; ANSI and Military
|
| +//
|
| +// hour = 2DIGIT ":" 2DIGIT [":" 2DIGIT]
|
| +// ; 00:00:00 - 23:59:59
|
| +//
|
| +// zone = "UT" / "GMT" ; Universal Time
|
| +// ; North American : UT
|
| +// / "EST" / "EDT" ; Eastern: - 5/ - 4
|
| +// / "CST" / "CDT" ; Central: - 6/ - 5
|
| +// / "MST" / "MDT" ; Mountain: - 7/ - 6
|
| +// / "PST" / "PDT" ; Pacific: - 8/ - 7
|
| +// / 1ALPHA ; Military: Z = UT;
|
| +// ; A:-1; (J not used)
|
| +// ; M:-12; N:+1; Y:+12
|
| +// / ( ("+" / "-") 4DIGIT ) ; Local differential
|
| +// ; hours+min. (HHMM)
|
| +// Return local time if ret_local_time == true, return UTC time otherwise
|
| +bool ParseRFC822DateTime(const char* str, struct tm* time, bool ret_local_time);
|
| +
|
| +// Parse a string to time span.
|
| +//
|
| +// A TimeSpan value can be represented as
|
| +// [d.]hh:mm:ss
|
| +//
|
| +// d = days (optional)
|
| +// hh = hours as measured on a 24-hour clock
|
| +// mm = minutes
|
| +// ss = seconds
|
| +bool ParseStringToTimeSpan(const char* str, time64* time_span);
|
| +
|
| +} // namespace notifier
|
| +
|
| +#endif // CHROME_BROWSER_SYNC_NOTIFIER_BASE_TIME_H_
|
|
|
| Property changes on: chrome\browser\sync\notifier\base\time.h
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|