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

Side by Side Diff: base/i18n/time_formatting.cc

Issue 2573183002: Add process start time and CPU time columns to task manager (Closed)
Patch Set: Fix nits and conflicts. Created 3 years, 11 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 unified diff | Download patch
« no previous file with comments | « base/i18n/time_formatting.h ('k') | base/i18n/time_formatting_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/i18n/time_formatting.h" 5 #include "base/i18n/time_formatting.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <memory> 9 #include <memory>
10 10
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 icu::DateFormat::createDateTimeInstance(icu::DateFormat::kFull)); 146 icu::DateFormat::createDateTimeInstance(icu::DateFormat::kFull));
147 return TimeFormat(formatter.get(), time); 147 return TimeFormat(formatter.get(), time);
148 } 148 }
149 149
150 string16 TimeFormatFriendlyDate(const Time& time) { 150 string16 TimeFormatFriendlyDate(const Time& time) {
151 std::unique_ptr<icu::DateFormat> formatter( 151 std::unique_ptr<icu::DateFormat> formatter(
152 icu::DateFormat::createDateInstance(icu::DateFormat::kFull)); 152 icu::DateFormat::createDateInstance(icu::DateFormat::kFull));
153 return TimeFormat(formatter.get(), time); 153 return TimeFormat(formatter.get(), time);
154 } 154 }
155 155
156 string16 TimeDurationFormat(const TimeDelta& time, 156 string16 TimeDurationFormat(const TimeDelta time,
157 const DurationFormatWidth width) { 157 const DurationFormatWidth width) {
158 UErrorCode status = U_ZERO_ERROR; 158 UErrorCode status = U_ZERO_ERROR;
159 const int total_minutes = static_cast<int>(time.InSecondsF() / 60 + 0.5); 159 const int total_minutes = static_cast<int>(time.InSecondsF() / 60 + 0.5);
160 int hours = total_minutes / 60; 160 const int hours = total_minutes / 60;
161 int minutes = total_minutes % 60; 161 const int minutes = total_minutes % 60;
162 UMeasureFormatWidth u_width = DurationWidthToMeasureWidth(width); 162 UMeasureFormatWidth u_width = DurationWidthToMeasureWidth(width);
163 163
164 const icu::Measure measures[] = { 164 const icu::Measure measures[] = {
165 icu::Measure(hours, icu::MeasureUnit::createHour(status), status), 165 icu::Measure(hours, icu::MeasureUnit::createHour(status), status),
166 icu::Measure(minutes, icu::MeasureUnit::createMinute(status), status)}; 166 icu::Measure(minutes, icu::MeasureUnit::createMinute(status), status)};
167 icu::MeasureFormat measure_format(icu::Locale::getDefault(), u_width, status); 167 icu::MeasureFormat measure_format(icu::Locale::getDefault(), u_width, status);
168 icu::UnicodeString formatted; 168 icu::UnicodeString formatted;
169 icu::FieldPosition ignore(icu::FieldPosition::DONT_CARE); 169 icu::FieldPosition ignore(icu::FieldPosition::DONT_CARE);
170 measure_format.formatMeasures(measures, 2, formatted, ignore, status); 170 measure_format.formatMeasures(measures, 2, formatted, ignore, status);
171 return base::string16(formatted.getBuffer(), formatted.length()); 171 return base::string16(formatted.getBuffer(), formatted.length());
172 } 172 }
173 173
174 string16 TimeDurationFormatWithSeconds(const TimeDelta time,
175 const DurationFormatWidth width) {
176 UErrorCode status = U_ZERO_ERROR;
177 const int64_t total_seconds = static_cast<int>(time.InSecondsF() + 0.5);
178 const int hours = total_seconds / 3600;
179 const int minutes = (total_seconds - hours * 3600) / 60;
180 const int seconds = total_seconds % 60;
181 UMeasureFormatWidth u_width = DurationWidthToMeasureWidth(width);
182
183 const icu::Measure measures[] = {
184 icu::Measure(hours, icu::MeasureUnit::createHour(status), status),
185 icu::Measure(minutes, icu::MeasureUnit::createMinute(status), status),
186 icu::Measure(seconds, icu::MeasureUnit::createSecond(status), status)};
187 icu::MeasureFormat measure_format(icu::Locale::getDefault(), u_width, status);
188 icu::UnicodeString formatted;
189 icu::FieldPosition ignore(icu::FieldPosition::DONT_CARE);
190 measure_format.formatMeasures(measures, 3, formatted, ignore, status);
191 return base::string16(formatted.getBuffer(), formatted.length());
192 }
193
174 HourClockType GetHourClockType() { 194 HourClockType GetHourClockType() {
175 // TODO(satorux,jshin): Rework this with ures_getByKeyWithFallback() 195 // TODO(satorux,jshin): Rework this with ures_getByKeyWithFallback()
176 // once it becomes public. The short time format can be found at 196 // once it becomes public. The short time format can be found at
177 // "calendar/gregorian/DateTimePatterns/3" in the resources. 197 // "calendar/gregorian/DateTimePatterns/3" in the resources.
178 std::unique_ptr<icu::SimpleDateFormat> formatter( 198 std::unique_ptr<icu::SimpleDateFormat> formatter(
179 static_cast<icu::SimpleDateFormat*>( 199 static_cast<icu::SimpleDateFormat*>(
180 icu::DateFormat::createTimeInstance(icu::DateFormat::kShort))); 200 icu::DateFormat::createTimeInstance(icu::DateFormat::kShort)));
181 // Retrieve the short time format. 201 // Retrieve the short time format.
182 icu::UnicodeString pattern_unicode; 202 icu::UnicodeString pattern_unicode;
183 formatter->toPattern(pattern_unicode); 203 formatter->toPattern(pattern_unicode);
(...skipping 21 matching lines...) Expand all
205 // See http://userguide.icu-project.org/formatparse/datetime for details 225 // See http://userguide.icu-project.org/formatparse/datetime for details
206 // about the date/time format syntax. 226 // about the date/time format syntax.
207 if (pattern_unicode.indexOf('a') == -1) { 227 if (pattern_unicode.indexOf('a') == -1) {
208 return k24HourClock; 228 return k24HourClock;
209 } else { 229 } else {
210 return k12HourClock; 230 return k12HourClock;
211 } 231 }
212 } 232 }
213 233
214 } // namespace base 234 } // namespace base
OLDNEW
« no previous file with comments | « base/i18n/time_formatting.h ('k') | base/i18n/time_formatting_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698