| // Copyright 2013 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/variations/variations_experiment_util.h" | 
 |  | 
 | #include <vector> | 
 |  | 
 | #include "base/logging.h" | 
 | #include "base/strings/stringprintf.h" | 
 | #include "base/strings/utf_string_conversions.h" | 
 | #include "base/time/time.h" | 
 |  | 
 | namespace variations { | 
 |  | 
 | const base::char16 kExperimentLabelSeparator = ';'; | 
 |  | 
 | namespace { | 
 |  | 
 | const char* const kDays[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}; | 
 |  | 
 | const char* const kMonths[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", | 
 |                                "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}; | 
 |  | 
 | }  // namespace | 
 |  | 
 | base::string16 BuildExperimentDateString(const base::Time& current_time) { | 
 |   // The Google Update experiment_labels timestamp format is: | 
 |   // "DAY, DD0 MON YYYY HH0:MI0:SE0 TZ" | 
 |   //  DAY = 3 character day of week, | 
 |   //  DD0 = 2 digit day of month, | 
 |   //  MON = 3 character month of year, | 
 |   //  YYYY = 4 digit year, | 
 |   //  HH0 = 2 digit hour, | 
 |   //  MI0 = 2 digit minute, | 
 |   //  SE0 = 2 digit second, | 
 |   //  TZ = 3 character timezone | 
 |   base::Time::Exploded then = {}; | 
 |   current_time.UTCExplode(&then); | 
 |   then.year += 1; | 
 |   DCHECK(then.HasValidValues()); | 
 |  | 
 |   return base::UTF8ToUTF16( | 
 |       base::StringPrintf("%s, %02d %s %d %02d:%02d:%02d GMT", | 
 |                          kDays[then.day_of_week], | 
 |                          then.day_of_month, | 
 |                          kMonths[then.month - 1], | 
 |                          then.year, | 
 |                          then.hour, | 
 |                          then.minute, | 
 |                          then.second)); | 
 | } | 
 |  | 
 | }  // namespace variations |