Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2829)

Unified Diff: base/time/time_mac.cc

Issue 2891583002: Fuchsia port of base/time, with some refactoring of POSIX time modules. (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: base/time/time_mac.cc
diff --git a/base/time/time_mac.cc b/base/time/time_mac.cc
index c75423df9c2229e50fd102efe760191b950a4c71..93aeecb3ffdacc29fdf601fc7b50357c056618e8 100644
--- a/base/time/time_mac.cc
+++ b/base/time/time_mac.cc
@@ -118,25 +118,6 @@ namespace base {
// Time -----------------------------------------------------------------------
-// Core Foundation uses a double second count since 2001-01-01 00:00:00 UTC.
-// The UNIX epoch is 1970-01-01 00:00:00 UTC.
-// Windows uses a Gregorian epoch of 1601. We need to match this internally
-// so that our time representations match across all platforms. See bug 14734.
-// irb(main):010:0> Time.at(0).getutc()
-// => Thu Jan 01 00:00:00 UTC 1970
-// irb(main):011:0> Time.at(-11644473600).getutc()
-// => Mon Jan 01 00:00:00 UTC 1601
-static const int64_t kWindowsEpochDeltaSeconds = INT64_C(11644473600);
-
-// static
-const int64_t Time::kWindowsEpochDeltaMicroseconds =
- kWindowsEpochDeltaSeconds * Time::kMicrosecondsPerSecond;
-
-// Some functions in time.cc use time_t directly, so we provide an offset
-// to convert from time_t (Unix epoch) and internal (Windows epoch).
-// static
-const int64_t Time::kTimeTToMicrosecondsOffset = kWindowsEpochDeltaMicroseconds;
-
// static
Time Time::Now() {
return FromCFAbsoluteTime(CFAbsoluteTimeGetCurrent());
@@ -152,7 +133,7 @@ Time Time::FromCFAbsoluteTime(CFAbsoluteTime t) {
return Max();
return Time(static_cast<int64_t>((t + kCFAbsoluteTimeIntervalSince1970) *
kMicrosecondsPerSecond) +
- kWindowsEpochDeltaMicroseconds);
+ kTimeTToMicrosecondsOffset);
}
CFAbsoluteTime Time::ToCFAbsoluteTime() const {
@@ -162,8 +143,9 @@ CFAbsoluteTime Time::ToCFAbsoluteTime() const {
return 0; // Consider 0 as a null Time.
if (is_max())
return std::numeric_limits<CFAbsoluteTime>::infinity();
- return (static_cast<CFAbsoluteTime>(us_ - kWindowsEpochDeltaMicroseconds) /
- kMicrosecondsPerSecond) - kCFAbsoluteTimeIntervalSince1970;
+ return (static_cast<CFAbsoluteTime>(us_ - kTimeTToMicrosecondsOffset) /
+ kMicrosecondsPerSecond) -
+ kCFAbsoluteTimeIntervalSince1970;
}
// static
@@ -194,7 +176,7 @@ bool Time::FromExploded(bool is_local, const Exploded& exploded, Time* time) {
// microseconds and then cast to int64. If
// it cannot be suited to int64, then fail to avoid overflows.
double microseconds =
- (seconds * kMicrosecondsPerSecond) + kWindowsEpochDeltaMicroseconds;
+ (seconds * kMicrosecondsPerSecond) + kTimeTToMicrosecondsOffset;
if (microseconds > std::numeric_limits<int64_t>::max() ||
microseconds < std::numeric_limits<int64_t>::min()) {
*time = Time(0);
@@ -229,7 +211,7 @@ void Time::Explode(bool is_local, Exploded* exploded) const {
if (microsecond < 0)
microsecond += kMicrosecondsPerSecond;
CFAbsoluteTime seconds = ((us_ - microsecond) / kMicrosecondsPerSecond) -
- kWindowsEpochDeltaSeconds -
+ kTimeTToMicrosecondsOffset -
miu 2017/05/18 02:52:38 Note: Trybot unit tests caught my erroneous replac
Lei Zhang 2017/05/18 19:06:13 Horray for tests!
kCFAbsoluteTimeIntervalSince1970;
base::ScopedCFTypeRef<CFTimeZoneRef> time_zone(

Powered by Google App Engine
This is Rietveld 408576698