Sintaxe do comando de data explicada%

2

Por que date +%Y%m%d -s "20081127" define a data para 2008 (ano), 11 (mês) e 27 dias, mas date +%Y -s "2008" define o relógio para 20:08?

    
por Quora Feans 21.03.2017 / 20:01

1 resposta

3

Com base na presença do -s flag, estou assumindo que você descreve o comando GNU date (parte do conjunto de utilitários GNU coreutils).

A string de formato afeta apenas a saída de date . O utilitário não usa a string de formato fornecida para analisar a cadeia de data / hora fornecida.

O GNU date possui regras bastante complexas para as datas de análise. Você pode encontrá-los na documentação de info date ou info coreutils sob o " Formatos de entrada de dados " título.

Especialmente o texto em " Números puros em strings de data " seria interessante para você:

The precise interpretation of a pure decimal number depends on the context in the date string.

If the decimal number is of the form yyyymmdd and no other calendar date item (see Calendar date items) appears before it in the date string, then yyyy is read as the year, mm as the month number and dd as the day of the month, for the specified calendar date.

If the decimal number is of the form hhmm and no other time of day item appears before it in the date string, then hh is read as the hour of the day and mm as the minute of the hour, for the specified time of day. mm can also be omitted.

If both a calendar date and a time of day appear to the left of a number in the date string, but no relative item, then the number overrides the year.

Observe que isso se aplica a todos os utilitários da coleção GNU Coreutils que são capazes de analisar datas, não apenas o GNU date .

    
por 21.03.2017 / 21:02