blob: ee4c7c16ff780a183082d3457d9f411edf7cd0b8 [file] [log] [blame]
// Copyright (c) 2012 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.
#include "components/sync/base/time.h"
#include <memory>
#include "base/i18n/unicodestring.h"
#include "base/strings/utf_string_conversions.h"
#include "third_party/icu/source/common/unicode/utypes.h"
#include "third_party/icu/source/i18n/unicode/smpdtfmt.h"
namespace syncer {
int64_t TimeToProtoTime(const base::Time& t) {
return (t - base::Time::UnixEpoch()).InMilliseconds();
}
base::Time ProtoTimeToTime(int64_t proto_t) {
return base::Time::UnixEpoch() + base::TimeDelta::FromMilliseconds(proto_t);
}
std::string GetTimeDebugString(const base::Time& t) {
// Note: We don't use some helper from base/i18n/time_formatting.h here,
// because those are all locale-dependent which we explicitly don't want.
UErrorCode status = U_ZERO_ERROR;
icu::SimpleDateFormat formatter(icu::UnicodeString("yyyy-MM-dd HH:mm:ss X"),
status);
DCHECK(U_SUCCESS(status));
icu::UnicodeString date_string;
formatter.format(static_cast<UDate>(t.ToDoubleT() * 1000), date_string);
return base::UTF16ToUTF8(base::i18n::UnicodeStringToString16(date_string));
}
} // namespace syncer