All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.google.common.flogger.parameter.DateTimeFormat Maven / Gradle / Ivy

There is a newer version: 2.0.32
Show newest version
/*
 * Copyright (C) 2014 The Flogger Authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.google.common.flogger.parameter;

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

/**
 * Supported date/time sub-format characters for the %t/%T formatting pattern.
 * 

* WARNING: Many date/time format specifiers use the system default time-zone for formatting * {@code Date} or {@code long} arguments. This makes it non system-portable, and its use is heavily * discouraged with non-{@code Calendar} arguments. */ public enum DateTimeFormat { // The following conversion characters are used for formatting times: /** * Hour of the day for the 24-hour clock, formatted as two digits with a leading zero as * necessary, i.e. 00 - 23. */ TIME_HOUR_OF_DAY_PADDED('H'), /** Hour of the day for the 24-hour clock, i.e. 0 - 23. */ TIME_HOUR_OF_DAY('k'), /** * Hour for the 12-hour clock, formatted as two digits with a leading zero as necessary, * i.e. 01 - 12. */ TIME_HOUR_12H_PADDED('I'), /** Hour for the 12-hour clock, i.e. 1 - 12. */ TIME_HOUR_12H('l'), /** * Minute within the hour formatted as two digits with a leading zero as necessary, i.e. 00 - 59. */ TIME_MINUTE_OF_HOUR_PADDED('M'), /** * Seconds within the minute, formatted as two digits with a leading zero as necessary, * i.e. 00 - 60 ("60" is a special value required to support leap seconds). */ TIME_SECONDS_OF_MINUTE_PADDED('S'), /** * Millisecond within the second formatted as three digits with leading zeros as necessary, * i.e. 000 - 999. */ TIME_MILLIS_OF_SECOND_PADDED('L'), /** * Nanosecond within the second, formatted as nine digits with leading zeros as necessary, * i.e. 000000000 - 999999999. */ TIME_NANOS_OF_SECOND_PADDED('N'), /** Locale-specific morning or afternoon marker in lower case, e.g. "am" or "pm". */ TIME_AM_PM('p'), /** * RFC 822 style numeric time zone offset from GMT, e.g. "-0800". This value will be adjusted as * necessary for Daylight Saving Time. For long, Long, and Date the time zone used is the default * time zone for this instance of the Java virtual machine. */ TIME_TZ_NUMERIC('z'), /** * A string representing the abbreviation for the time zone. This value will be adjusted as * necessary for Daylight Saving Time. For long, Long, and Date the time zone used is the default * time zone for this instance of the Java virtual machine. */ TIME_TZ_SHORT('Z'), /** Seconds since the beginning of the epoch starting at 1 January 1970 00:00:00 UTC. */ TIME_EPOCH_SECONDS('s'), /** Milliseconds since the beginning of the epoch starting at 1 January 1970 00:00:00 UTC. */ TIME_EPOCH_MILLIS('Q'), // The following conversion characters are used for formatting dates: /** Locale-specific full month name, e.g. "January", "February". */ DATE_MONTH_FULL('B'), /** Locale-specific abbreviated month name, e.g. "Jan", "Feb". */ DATE_MONTH_SHORT('b'), /** Same as 'b'. */ DATE_MONTH_SHORT_ALT('h'), /** Locale-specific full name of the day of the week, e.g. "Sunday", "Monday". */ DATE_DAY_FULL('A'), /** Locale-specific short name of the day of the week, e.g. "Sun", "Mon". */ DATE_DAY_SHORT('a'), /** * Four-digit year divided by 100, formatted as two digits with leading zero as necessary, i.e. 00 * - 99. Note that this is not strictly the "century", because "19xx" is "19", not "20". */ DATE_CENTURY_PADDED('C'), /** Year, formatted as at least four digits with leading zeros as necessary, e.g. 0092. */ DATE_YEAR_PADDED('Y'), /** Last two digits of the year, formatted with leading zeros as necessary, i.e. 00 - 99. */ DATE_YEAR_OF_CENTURY_PADDED('y'), /** Day of year, formatted as three digits with leading zeros as necessary, e.g. 001 - 366. */ DATE_DAY_OF_YEAR_PADDED('j'), /** Month, formatted as two digits with leading zeros as necessary, i.e. 01 - 13. */ DATE_MONTH_PADDED('m'), /** Day of month, formatted as two digits with leading zeros as necessary, i.e. 01 - 31. */ DATE_DAY_OF_MONTH_PADDED('d'), /** Day of month, formatted as two digits, i.e. 1 - 31. */ DATE_DAY_OF_MONTH('e'), // The following conversion characters are used for formatting common date/time compositions. /** Time formatted for the 24-hour clock as "%tH:%tM". */ DATETIME_HOURS_MINUTES('R'), /** Time formatted for the 24-hour clock as "%tH:%tM:%tS". */ DATETIME_HOURS_MINUTES_SECONDS('T'), /** Time formatted for the 12-hour clock as "%tI:%tM:%tS %Tp". */ DATETIME_HOURS_MINUTES_SECONDS_12H('r'), /** Date formatted as "%tm/%td/%ty". */ DATETIME_MONTH_DAY_YEAR('D'), /** ISO 8601 complete date formatted as "%tY-%tm-%td". */ DATETIME_YEAR_MONTH_DAY('F'), /** Date and time formatted as "%ta %tb %td %tT %tZ %tY", e.g. "Sun Jul 20 16:17:00 EDT 1969". */ DATETIME_FULL('c'); private static final Map MAP; static { Map map = new HashMap(); for (DateTimeFormat dtf : values()) { if (map.put(dtf.formatChar, dtf) != null) { throw new IllegalStateException("duplicate format character: " + dtf); } } MAP = Collections.unmodifiableMap(map); } public static final DateTimeFormat of(char c) { return MAP.get(c); } private final char formatChar; DateTimeFormat(char formatChar) { this.formatChar = formatChar; } public char getChar() { return formatChar; } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy