time_formatting.cc revision 21d179b334e59e9a3bfcaed4c4430bef1bc5759d
1// Copyright (c) 2009 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "base/i18n/time_formatting.h" 6 7#include "base/logging.h" 8#include "base/scoped_ptr.h" 9#include "base/utf_string_conversions.h" 10#include "base/time.h" 11#include "unicode/datefmt.h" 12 13using base::Time; 14 15namespace { 16 17string16 TimeFormat(const icu::DateFormat* formatter, 18 const Time& time) { 19 DCHECK(formatter); 20 icu::UnicodeString date_string; 21 22 formatter->format(static_cast<UDate>(time.ToDoubleT() * 1000), date_string); 23 return string16(date_string.getBuffer(), 24 static_cast<size_t>(date_string.length())); 25} 26 27} // namespace 28 29namespace base { 30 31string16 TimeFormatTimeOfDay(const Time& time) { 32 // We can omit the locale parameter because the default should match 33 // Chrome's application locale. 34 scoped_ptr<icu::DateFormat> formatter( 35 icu::DateFormat::createTimeInstance(icu::DateFormat::kShort)); 36 return TimeFormat(formatter.get(), time); 37} 38 39string16 TimeFormatShortDate(const Time& time) { 40 scoped_ptr<icu::DateFormat> formatter( 41 icu::DateFormat::createDateInstance(icu::DateFormat::kMedium)); 42 return TimeFormat(formatter.get(), time); 43} 44 45string16 TimeFormatShortDateNumeric(const Time& time) { 46 scoped_ptr<icu::DateFormat> formatter( 47 icu::DateFormat::createDateInstance(icu::DateFormat::kShort)); 48 return TimeFormat(formatter.get(), time); 49} 50 51string16 TimeFormatShortDateAndTime(const Time& time) { 52 scoped_ptr<icu::DateFormat> formatter( 53 icu::DateFormat::createDateTimeInstance(icu::DateFormat::kShort)); 54 return TimeFormat(formatter.get(), time); 55} 56 57string16 TimeFormatFriendlyDateAndTime(const Time& time) { 58 scoped_ptr<icu::DateFormat> formatter( 59 icu::DateFormat::createDateTimeInstance(icu::DateFormat::kFull)); 60 return TimeFormat(formatter.get(), time); 61} 62 63string16 TimeFormatFriendlyDate(const Time& time) { 64 scoped_ptr<icu::DateFormat> formatter(icu::DateFormat::createDateInstance( 65 icu::DateFormat::kFull)); 66 return TimeFormat(formatter.get(), time); 67} 68 69} // namespace base 70