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

Unified Diff: base/time/time_mac.cc

Issue 2891583002: Fuchsia port of base/time, with some refactoring of POSIX time modules. (Closed)
Patch Set: REBASE before commit. 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
« no previous file with comments | « base/time/time_fuchsia.cc ('k') | base/time/time_now_posix.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/time/time_mac.cc
diff --git a/base/time/time_mac.cc b/base/time/time_mac.cc
index c75423df9c2229e50fd102efe760191b950a4c71..0ae3a30a3251419baead95006ed1d71843e8750c 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);
@@ -228,8 +210,8 @@ void Time::Explode(bool is_local, Exploded* exploded) const {
int64_t microsecond = us_ % kMicrosecondsPerSecond;
if (microsecond < 0)
microsecond += kMicrosecondsPerSecond;
- CFAbsoluteTime seconds = ((us_ - microsecond) / kMicrosecondsPerSecond) -
- kWindowsEpochDeltaSeconds -
+ CFAbsoluteTime seconds = ((us_ - microsecond - kTimeTToMicrosecondsOffset) /
+ kMicrosecondsPerSecond) -
kCFAbsoluteTimeIntervalSince1970;
base::ScopedCFTypeRef<CFTimeZoneRef> time_zone(
« no previous file with comments | « base/time/time_fuchsia.cc ('k') | base/time/time_now_posix.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698