In perl, calcolo differenza in ore tra due date

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Laga
Prode Principiante
Messaggi: 2
Iscrizione: martedì 28 giugno 2022, 18:26
Sesso: Maschile

In perl, calcolo differenza in ore tra due date

Messaggio da Laga »

Salve ragazzi sono nuovo del gruppo e avevo bisogno di un aiuto.
Ho due date in questo formato, es:
date1: Fri, 28 June 2022 14:10:12 +0200
date2: Fri, 28 June 2022 17:10:12 +0200

Avrei bisogno di calcolare la differenza tra le due date in termini di ore, nel caso sopra sarebbero 3 ore. Con il valore trovato dovrei poi proseguire con altri passi.
Come potrei risolvere in perl?
korda
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1703
Iscrizione: giovedì 24 dicembre 2020, 15:58

Re: In perl, calcolo differenza in ore tra due date

Messaggio da korda »

Prima di procedere con il calcolo vero e proprio forse dovresti convertire le stringhe delle date in un tipo di dato più facilmente manipolabile.

Qui ho trovato qualcosa per darti un'idea di cosa intendo:
https://stackoverflow.com/questions/821 ... o-datetime

Se magari provassi a cercare anche su CPAN probabilmente potresti trovare librerie e script che farebbero al caso tuo.
Io non sono Bagheera né Akela, io non frequento la Rupe.
Io sono Kaa: faccio ballare le scimmie alle Tane Fredde.
Lucio C
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 363
Iscrizione: venerdì 10 dicembre 2021, 18:33
Desktop: fvwm
Distribuzione: (X)Ubuntu20@home; openSUSE42.3@work
Sesso: Maschile
Località: Paneropoli

Re: In perl, calcolo differenza in ore tra due date

Messaggio da Lucio C »

Io so farlo solo in mysql (o in Fortran :devilmad: ) o in uno spreadsheet. Ma cercando in rete per "date difference in perl" si trova fin troppa roba.
Inclusi shell script che usano il comando date con opportuni formati.
P.es. ho trovato in giro questo comando sdate che ritorna la mitica data dell'Eternal September ... adesso e' Tue Sep 10528 21:03:53 CEST 1993 :devilmad:

Codice: Seleziona tutto

#! /bin/bash   
#
# date since 1993 Sep 01 (actually one day before so 01 is 01 etc.)
orig=$(date --date "1993-08-31 UTC" +%s)
now=$(date +%s)
ds=$(($now - $orig))
dd=$(($ds/(3600*24)))
date "+%a Sep $dd %T %Z 1993"
The reasonable man adapts himself to the world: the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man. (G.B. Shaw)
Avatar utente
DoctorStrange
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2855
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 22.04 LTS Jammy Jellyfish
Sesso: Maschile
Località: Roma, Italia

Re: In perl, calcolo differenza in ore tra due date

Messaggio da DoctorStrange »

Io convertirei le date nell'unix epoch. A questo punto si tratterebbe semplicemente di fare una differenza tra due costanti numeriche. Il risultato poi lo convertirsi nuovamente in datetime.
Lucio C
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 363
Iscrizione: venerdì 10 dicembre 2021, 18:33
Desktop: fvwm
Distribuzione: (X)Ubuntu20@home; openSUSE42.3@work
Sesso: Maschile
Località: Paneropoli

Re: In perl, calcolo differenza in ore tra due date

Messaggio da Lucio C »

E' quello che fa lo script sopra
The reasonable man adapts himself to the world: the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man. (G.B. Shaw)
Laga
Prode Principiante
Messaggi: 2
Iscrizione: martedì 28 giugno 2022, 18:26
Sesso: Maschile

Re: In perl, calcolo differenza in ore tra due date

Messaggio da Laga »

Lucio C ha scritto:
martedì 28 giugno 2022, 21:05
Io so farlo solo in mysql (o in Fortran :devilmad: ) o in uno spreadsheet. Ma cercando in rete per "date difference in perl" si trova fin troppa roba.
Inclusi shell script che usano il comando date con opportuni formati.
P.es. ho trovato in giro questo comando sdate che ritorna la mitica data dell'Eternal September ... adesso e' Tue Sep 10528 21:03:53 CEST 1993 :devilmad:

Codice: Seleziona tutto

#! /bin/bash   
#
# date since 1993 Sep 01 (actually one day before so 01 is 01 etc.)
orig=$(date --date "1993-08-31 UTC" +%s)
now=$(date +%s)
ds=$(($now - $orig))
dd=$(($ds/(3600*24)))
date "+%a Sep $dd %T %Z 1993"
Ho tradotto l'esempio qui sopra in perl e sono riuscito nel mio intento, grazie
Avatar utente
vaeVictis
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4703
Iscrizione: venerdì 27 luglio 2012, 17:58
Desktop: Gnome
Distribuzione: Ubuntu 20.04 64bit

Re: In perl, calcolo differenza in ore tra due date

Messaggio da vaeVictis »

Posta la traduzione, pottebbero trarne beneficio anche altri.
Ciao.
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: In perl, calcolo differenza in ore tra due date

Messaggio da crap0101 »

per non saper nè leggere nè scrivere (in perl :-D)

Codice: Seleziona tutto

crap0101@orange:/tmp$ cat d.pl
#!/usr/bin/perl

use strict;
use warnings;
use Time::Piece;

my $s_date1 = "Fri, 28 June 2022 14:10:12 +0200";
my $s_date2 = "Fri, 28 June 2022 17:10:12 +0200";
my $date_fmt = "%a, %d %B %Y %H:%M:%S %z";
my $t1 = Time::Piece->strptime($s_date1, $date_fmt);
my $t2 = Time::Piece->strptime($s_date2, $date_fmt);
printf "diff h: %d\n", ($t2 - $t1)->hours;

crap0101@orange:/tmp$ perl d.pl
diff h: 3
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 7 ospiti