170 lines
4.3 KiB
Python
170 lines
4.3 KiB
Python
# -*- coding: utf-8 -*- #
|
|
# Copyright 2015 Google LLC. All Rights Reserved.
|
|
#
|
|
# 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.
|
|
|
|
"""Date/time input format supplementary help."""
|
|
|
|
from __future__ import absolute_import
|
|
from __future__ import division
|
|
from __future__ import unicode_literals
|
|
|
|
from googlecloudsdk.calliope import base
|
|
|
|
|
|
# NOTE: If the name of this topic is modified, please make sure to update all
|
|
# references to it in error messages and other help messages as there are no
|
|
# tests to catch such changes.
|
|
class DateTimes(base.TopicCommand):
|
|
"""Date/time input format supplementary help.
|
|
|
|
*gcloud* command line flags and filter expressions that expect date/time
|
|
string values support common input formats. These formats fall into two main
|
|
categories: absolute date/times and relative durations.
|
|
|
|
### Absolute date/time formats
|
|
|
|
Absolute date/time input formats minimally support
|
|
[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) and
|
|
[RFC 822](https://www.rfc-editor.org/rfc/rfc0822.txt) date/times. When omitted
|
|
the date/time value defaults are:
|
|
|
|
* year, month, day - current value
|
|
* hour, minute, second, fractional second - 0
|
|
|
|
The supported absolute date/time input formats are listed here.
|
|
|
|
ISO 8601 / RFC 3339 zulu:
|
|
|
|
2003-09-25T10:49:41.519Z
|
|
2003-09-25T10:49:41Z
|
|
|
|
ISO 8601 numeric timezone offset:
|
|
|
|
2003-09-25T10:49:41.5-0000
|
|
2003-09-25T10:49:41.5-03:00
|
|
2003-09-25T10:49:41.5+0300
|
|
|
|
ISO with omitted parts:
|
|
|
|
2003-09-25T10:49:41
|
|
2003-09-25T10:49
|
|
2003-09-25T10
|
|
2003-09-25
|
|
|
|
RFC 822:
|
|
|
|
Thu, 25 Sep 2003 10:49:41 -0300
|
|
|
|
UNIX date command, explicit timezone:
|
|
|
|
Thu Sep 25 10:36:28 EDT 2003
|
|
2003 10:36:28 EDT 25 Sep Thu
|
|
|
|
local timezone:
|
|
|
|
Thu Sep 25 10:36:28 2003
|
|
|
|
omitted parts (date parts default to the current date, time parts default
|
|
to 0):
|
|
|
|
Thu Sep 25 10:36:28
|
|
Thu Sep 10:36:28
|
|
Thu 10:36:28
|
|
Thu 10:36
|
|
10:36
|
|
|
|
omitted parts with different order:
|
|
|
|
Thu Sep 25 2003
|
|
Sep 25 2003
|
|
Sep 2003
|
|
Sep
|
|
2003
|
|
|
|
ISO no separators:
|
|
|
|
20030925T104941.5-0300
|
|
20030925T104941-0300
|
|
20030925T104941
|
|
20030925T1049
|
|
20030925T10
|
|
20030925
|
|
|
|
no T separator:
|
|
|
|
20030925104941
|
|
200309251049
|
|
|
|
other date orderings:
|
|
|
|
2003-09-25
|
|
2003-Sep-25
|
|
25-Sep-2003
|
|
Sep-25-2003
|
|
09-25-2003
|
|
|
|
other date separators:
|
|
|
|
2003.Sep.25
|
|
2003/09/25
|
|
2003 Sep 25
|
|
2003 09 25
|
|
|
|
### Relative duration date/time formats
|
|
|
|
A relative duration specifies a date/time relative to the current time.
|
|
Relative durations are based on
|
|
[ISO 8601 durations](https://en.wikipedia.org/wiki/ISO_8601#Durations).
|
|
They are case-insensitive and must be prefixed with +P or -P.
|
|
|
|
A fully qualified duration string contains year, month, day, hour, minute,
|
|
second, and fractional second parts. Each part is a number followed by a
|
|
single character suffix:
|
|
|
|
* P - period (the duration designator)
|
|
* Y - year
|
|
* M - minute if after T or H, month otherwise
|
|
* D - day
|
|
* T - separates date parts from time parts
|
|
* H - hour
|
|
* M - minute if after T or H, month otherwise
|
|
* S - second (for fractional seconds, use decimal value for seconds)
|
|
|
|
At least one part must be specified. Omitted parts default to 0.
|
|
|
|
-P1Y2M3DT4H5M6.7S
|
|
+p1y2m3dT4h5m6.7s
|
|
|
|
A relative duration may be used in any context that expects a date/time
|
|
string.
|
|
|
|
For example:
|
|
|
|
* 1 month ago: -p1m
|
|
* 30 minutes from now: +pt30m
|
|
* 2 hours and 30 minutes ago: -p2h30m
|
|
|
|
### Absolute duration formats
|
|
|
|
An absolute duration specifies a period of time. It has the same syntax as
|
|
a relative duration except that there is no leading *+* or *-*, and the
|
|
leading *P* is optional.
|
|
|
|
For example:
|
|
|
|
* 1 month: 1m
|
|
* 1 hour 30 minutes: 1h30m
|
|
* 30 minutes: t30m
|
|
"""
|