Estou procurando por comandos Unix diretos para obter o primeiro domingo do próximo mês, a primeira segunda-feira do próximo mês, a primeira terça-feira do próximo mês, a primeira quarta-feira do próximo mês etc.
Vou precisar deles no formato completo da data (a hora não é obrigatória)
Posso obter números como 2, 3, 4 etc. Como não quero apenas números, precisarei deles em formato de data (inclui dia, mês, ano)
$ NEXT_MONTH=`date +'%m %Y' -d 'next month'` $ echo $NEXT_MONTH 04 2017 $ NEXT_SUNDAY=`cal $NEXT_MONTH | awk 'NF==7 && !/^Su/{print $1;exit}'` $ echo $NEXT_SUNDAY 2
Vou precisar dessas datas para enviar notificações para o grupo de email.
Ex: eu poderia receber o primeiro sábado do próximo mês, como abaixo.
$ firstofmonth=$(date -d '+1 months' '+%Y%m01')
20170401
$ firstsaturday=$(date -d "$firstofmonth" '+%Y-%m')-$((7 - \
$(date -d "$firstofmonth" '+%u') ))
2017-04-1
bash
é um clone inacabado do ksh (com alguns recursos de (t) csh e zsh e até alguns deles). Versões recentes debash
adicionaram suporte paraprintf '%(format)T'
fromksh93
, mas não a capacidade de analisar esse tipo de especificações de data. Substitua seu she-bang por#! /path/to/ksh93 -
.bash
é um clone inacabado do ksh" - sempre me senti assim.Supondo que o GNU
date
(para isso-d
você está usando a si mesmo) e umzsh
shell semelhante a{1..7}
:Substitua
awk
Monpor qualquer dia da semana necessário (useLC_ALL=C
para obter os nomes dos meses em inglês, independentemente da localidade do usuário). Além disso, pode ser melhor armazenar isso em uma variável se você for fazer uma nova consulta para cada dia da semana:fonte
Na verdade, o PHP facilita a análise de datas com entrada de texto, se disponível no seu sistema.
Exemplo:
Eu tenho essa função no meu .bashrc:
Que eu posso usar como:
Editar opção Adicionando para usar
cal
Quase todo sistema que possui
bash
terácal
. O programa de calendário. Você pode obter uma lista de data para o primeiro de cada dia da semana, executando uma combinação decal
,date
eawk
, como segue:O que fornecerá a seguinte saída:
Altere
$2
para$NF
na declaração awk para obter a data da última ocorrência de cada dia em um mês.fonte
php
instalou. Tenho atualizado com um exemplo que usa ascal
,date
eawk
comandos.