Estoy buscando un comando directo de Unix para obtener el primer domingo del próximo mes, el primer lunes del próximo mes, el primer martes del próximo mes, el primer miércoles del próximo mes, etc.
Los necesitaré en el formato de fecha completo (el tiempo no es obligatorio)
Puedo obtener números como 2, 3, 4, etc. Como no quiero solo números, los necesitaré en formato de fecha (incluye día, mes, año)
$ 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
Necesitaré estas fechas para enviar notificaciones para el grupo de correo electrónico.
Ej: podría obtener el primer sábado del próximo mes como se muestra a continuación.
$ firstofmonth=$(date -d '+1 months' '+%Y%m01')
20170401
$ firstsaturday=$(date -d "$firstofmonth" '+%Y-%m')-$((7 - \
$(date -d "$firstofmonth" '+%u') ))
2017-04-1
bash
es un clon inacabado de ksh (con algunas características de (t) csh y zsh e incluso algunas propias). Las versiones recientes debash
han agregado soporte paraprintf '%(format)T'
fromksh93
, pero no la capacidad de analizar este tipo de especificaciones de fecha. Reemplace su she-bang con#! /path/to/ksh93 -
.bash
es un clon inacabado de ksh": siempre me he sentido así.Suponiendo GNU
date
(para eso-d
te estás usando a ti mismo), y unzsh
shell similar para{1..7}
:Reemplace el
awk
Moncon cualquier día de la semana que sea necesario (useLC_ALL=C
para obtener los nombres de los meses en inglés, independientemente de la configuración regional del usuario). Además, podría ser mejor almacenar esto en una variable si va a volver a consultar para cada día de la semana:fuente
PHP en realidad hace que sea bastante fácil analizar fechas con entrada de texto, si está disponible en su sistema.
Ejemplo:
Tengo esta función en mi .bashrc:
Que puedo usar como:
Opción Editar Añadir para usar
cal
Casi todos los sistemas que tenga
bash
tendráncal
. El programa del calendario. Usted puede obtener una lista de la fecha de la primera semana de cada día mediante la ejecución de una combinación decal
,date
yawk
, de la siguiente manera:Lo que te dará el siguiente resultado:
Cambie
$2
a$NF
en la declaración awk para obtener la fecha de la última ocurrencia de cada día en un mes.fuente
php
instalados. He puesto al día con un ejemplo que utiliza loscal
,date
yawk
los comandos.