Newsgroup: it.comp.os.linux.iniziare
Titolo: Comando date

Ciao a tutti,
ho la necessità di creare uno script bash che mi restituisca il numero 
del giorno dell'anno di una certa data.
Non sono riuscito a trovare niente nella man di date.
Potete aiutarmi?
Grazie


DATE(1)                          User Commands                        
DATE(1)
 
NAME
       date - print or set the system date and time
 
[...]
 
       -d, --date=STRING
              display time described by STRING, not 'now'
 
[...]
 
EXAMPLES
 
[...]
 
       Show the local time for 9AM next Friday on the west coast of the US
 
              $ date --date='TZ="America/Los_Angeles" 09:00 next Fri'
 
 
  Altro esempio:
 
[alessandro@wkstn05 ~]$ date --date='09:32 May 29 2015'
ven 29 mag 2015, 09.32.00, CEST
[alessandro@wkstn05 ~]$ date --date='09:32 May 29 2015' +%F-%T
2015-05-29-09:32:00
[alessandro@wkstn05 ~]$
 
 
  Ciao,
 
 
-- 
Alessandro Selli 
http://alessandro.route-add.net
 
AVVERTENZA: i messaggi inviati a "trappola" non mi arriveranno.
WARNING: messages sent to "trappola" will never reach me.
 

 del giorno dell'anno di una certa data.
 
  Scusa, credo di aver frainteso, rileggendo mi sembra che tu voglia
sapere un certo giorno quale giorno dell'anno è tra il giorno 1 e 365,
giusto?  Se è così date non lo fa, date si occupa di date/orari di
calendario e Unix time, altri valori vanno estrapolati con routine
apposite (scriptini).  Ad esempio ottenendo il valore Unix Time (date
+%s) di una data, ottenere lo stesso valore per un'altra e convertendo
la differenza espressa in secondi in giorni.
 
  Esempio: Unix time dei giorni 1 gennaio e 29 maggio 2016:
 
[alessandro@wkstn05 ~]$ date --date='Jan 01 2016' +%s
1451602800
[alessandro@wkstn05 ~]$ date --date='May 29 2016' +%s
1464472800
[alessandro@wkstn05 ~]$ 
 
  La loro differenza è 12870000, che divisa per il numero di secondi in un giorno (60*60*24=86400) ti da il giorno dell'anno della data 29 maggio 2016:
 
[alessandro@wkstn05 ~]$ echo $((($(date --date='May 29 2016' +%s)-$(date --date='Jan 01 2016' +%s))/86400))
148


 la differenza espressa in secondi in giorni.
 
Scusami tanto Alessandro, mi sono espresso male.
Io vorrei ottenere questo
 
#date 253  ---> Giorno dell'anno
 
# 15 Apr 2016 ---> LA corrispondenza giorno mese Anno
 
Grazie 1000
 
 

 trovare niente nella man di date.
 
Leggi meglio le pagine di 'date' e prova
 
$ date -d "9/11/2001" +%j
oppure
$ date -d "11 sep 2001" +%j
 
Il formato della stringa dipende dal locale del sistema.  Io uso 'en_US' 
perciò la stringa indica la data del "11 settembre 2001"
 
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   < 
http://giovanni.homelinux.net/
 >

 $ date -d "11 sep 2001" +%j
 
 
Ciao Giovanni,
dovrei fare la ricerca inversa cioè dal numero di giorno alla 
corrispondenza data(giorno/mese/anno)

 Grazie 1000
 
  Beh, alla luce di quanto scritto dovrebbe essere facile.  Converti il
numero di giorni in secondi e converti il tempo Unix così ottenuto in
una data nel formato che vuoi:
 
[alessandro@wkstn05 ~]$ GIORNI=253
[alessandro@wkstn05 ~]$ date --date="@$((GIORNI*86400))"
ven 11 set 1970, 01.00.00, CET
[alessandro@wkstn05 ~]$ date --date="@$((GIORNI*86400))" +%F-%T
1970-09-11-01:00:00
[alessandro@wkstn05 ~]$ echo "2016-$(date --date="@$((GIORNI*86400))"
+%m-%d)"
2016-09-11
[alessandro@wkstn05 ~]$
 
  Nota che tutti gli esempi che ho fornito contano i giorni dell'anno a
partire da zero.



(scusami il link lungo)
 
 
Salut