Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > it.comp.lang.javascript > #8200 > unrolled thread

Calcolare giorni lavorativi comprese tra due date

Started bydiego1966 <diegocicirello@gmail.com>
First post2017-05-07 11:40 -0700
Last post2017-05-11 11:44 -0700
Articles 7 — 5 participants

Back to article view | Back to it.comp.lang.javascript


Contents

  Calcolare giorni lavorativi comprese tra due date diego1966 <diegocicirello@gmail.com> - 2017-05-07 11:40 -0700
    Re: Calcolare giorni lavorativi comprese tra due date Dr J R Stockton <reply1700@merlyn.demon.co.uk.invalid> - 2017-05-08 23:30 +0100
    Re: Calcolare giorni lavorativi comprese tra due date Sandro kensan <kensan@kensan.it> - 2017-05-09 16:19 +0200
      Re: Calcolare giorni lavorativi comprese tra due date Alessandro Pellizzari <shuriken@amiran.it> - 2017-05-09 17:54 +0100
      Re: Calcolare giorni lavorativi comprese tra due date Dr J R Stockton <reply1700@merlyn.demon.co.uk.invalid> - 2017-05-10 17:45 +0100
    Re: Calcolare giorni lavorativi comprese tra due date diego1966 <diegocicirello@gmail.com> - 2017-05-09 15:13 -0700
    Re: Calcolare giorni lavorativi comprese tra due date fmassei@gmail.com - 2017-05-11 11:44 -0700

#8200 — Calcolare giorni lavorativi comprese tra due date

Fromdiego1966 <diegocicirello@gmail.com>
Date2017-05-07 11:40 -0700
SubjectCalcolare giorni lavorativi comprese tra due date
Message-ID<c23843da-6b2e-46b5-9e50-b8ff9162277b@googlegroups.com>
Buona sera, avrei bisogno di una grossa mano, in un modulo PDF ho bisogno di visualizzare in un campo che chiameremo "TotGiorni" un numero ricavato dall'intervallo di due campi data, che chiameremo "Dalgg" e "Algg", come da titolo i giorni sono lavorativi e si possono sviluppare in una settimana lavorativa di 5 gg o di 6 gg (Sabato incluso), in tutto questo per calcolare i giorni di effettivo lavoro sono da considerare anche le festività compresa il santo patrono e la pasqua (o meglio la pasquetta visto che la pasqua cade sempre di domenica), per farmi restituire i giorni effettivi tra due date ho usato questo script :


//console.show();
//console.clear();


var strStart = this.getField("dalgg").value;
var strEnd = this.getField("Algg").value;
if(strStart.length && strEnd.length)
{
  var dateStart = util.scand("dd/mm/yyyy",strStart);
  var dateEnd = util.scand("dd/mm/yyyy",strEnd);
  var diff = dateEnd.getTime() - dateStart.getTime();
  var oneDay = 24 * 60 * 60 * 1000;
  var days = Math.floor(diff/oneDay);
  event.value = 1+days;
}
else
  event.value = 0;

dove il 1+days mi ritorna 1 se il giorno lavorativo è compreso tra la stessa data (data inizio oggi, data fine oggi), viceversa se non aggiungevo quell' 1 mi restituiva 0.

potreste darmi una mano di aiuto per favore? non so come fare, sono molto scarso, come posso fare ad implementare a questo codice la funzione per determinare i festivi e la pasquetta e poter scegliere se il calcolo dei giorni fa fatto su 5 giorni lavorativi o su 6 se includiamo il sabato.

[toc] | [next] | [standalone]


#8201

FromDr J R Stockton <reply1700@merlyn.demon.co.uk.invalid>
Date2017-05-08 23:30 +0100
Message-ID<SKV9nGRpFPEZFwsb@invalid.uk.co.demon.merlyn.invalid>
In reply to#8200
In it.comp.lang.javascript message <c23843da-6b2e-46b5-9e50-b8ff9162277b
@googlegroups.com>, Sun, 7 May 2017 11:40:05, diego1966
<diegocicirello@gmail.com> posted:

>Buona sera, avrei bisogno di una grossa mano, in un modulo PDF ho bisogno di visualizzare in un campo che chiameremo "TotGiorni" un numero
>ricavato dall'intervallo di due campi data, che chiameremo "Dalgg" e "Algg", come da titolo i giorni sono lavorativi e si possono sviluppare in
>una settimana lavorativa di 5 gg o di 6 gg (Sabato incluso), in tutto questo per calcolare i giorni di effettivo lavoro sono da considerare
>anche le festività compresa il santo patrono e la pasqua (o meglio la pasquetta visto che la pasqua cade sempre di domenica), per farmi
>restituire i giorni effettivi tra due date ho usato questo script :

Code for the Date of Easter Sunday, derived from the British Calendar
Act, and agreeing perpetually with Clavius & Gregory XIII, can be found
in
<http://web.archive.org/web/20120805200830/http://www.merlyn.demon.co.uk
/estr-bcp.htm>.

-- 
 (c) John Stockton, Surrey, UK.  ¬@merlyn.demon.co.uk   Turnpike v6.05   MIME.
 Merlyn Web Site <                       > - FAQish topics, acronyms, & links.

[toc] | [prev] | [next] | [standalone]


#8202

FromSandro kensan <kensan@kensan.it>
Date2017-05-09 16:19 +0200
Message-ID<ene1enFes38U1@mid.individual.net>
In reply to#8200
On 07/05/2017 20:40, diego1966 wrote:

>   var oneDay = 24 * 60 * 60 * 1000;
>   var days = Math.floor(diff/oneDay);

Tra l'altro se c'è il cambio di orario tipicamente in primavera e in
autunno forse non funziona questo sistema.

-- 
Sandro kensan www.kensan.it & www.qiqi.it geek site
Saluto gli agenti della NSA - Hello NSA - www.nsa.gov

[toc] | [prev] | [next] | [standalone]


#8203

FromAlessandro Pellizzari <shuriken@amiran.it>
Date2017-05-09 17:54 +0100
Message-ID<eneaitFgs6rU1@mid.individual.net>
In reply to#8202
On 09/05/17 15:19, Sandro kensan wrote:

> On 07/05/2017 20:40, diego1966 wrote:
>
>>   var oneDay = 24 * 60 * 60 * 1000;
>>   var days = Math.floor(diff/oneDay);

> Tra l'altro se c'è il cambio di orario tipicamente in primavera e in
> autunno forse non funziona questo sistema.

E i bisestili, e i leap seconds, e le feste nazionali/regionali, e un 
milione di altre cose.

Gestire date e` una delle cose piu` difficili.

Io partirei almeno dall'usare moment.js per fare i calcoli. Poi le feste 
locali vanno calcolate a mano, ma almeno e` un inizio.

Bye.

[toc] | [prev] | [next] | [standalone]


#8205

FromDr J R Stockton <reply1700@merlyn.demon.co.uk.invalid>
Date2017-05-10 17:45 +0100
Message-ID<zVJFgtDbO0EZFw5S@invalid.uk.co.demon.merlyn.invalid>
In reply to#8202
In it.comp.lang.javascript messaggio <ene1enFes38U1@mid.individual.net>,
2017-05-09 16:19:02, Sandro kensan <kensan@kensan.it> ha scritto:

>On 07/05/2017 20:40, diego1966 wrote:
>
>>   var oneDay = 24 * 60 * 60 * 1000;
>>   var days = Math.floor(diff/oneDay);
>
>Tra l'altro se c'è il cambio di orario tipicamente in primavera e in
>autunno forse non funziona questo sistema.

Aggiungi mezza giornata alla data successiva; O utilizzare Math.round
invece di Math.floor.


-- 
 (c) John Stockton, Surrey, UK.  ¬@merlyn.demon.co.uk   Turnpike v6.05   MIME.
 Merlyn Web Site <                       > - FAQish topics, acronyms, & links.

[toc] | [prev] | [next] | [standalone]


#8204

Fromdiego1966 <diegocicirello@gmail.com>
Date2017-05-09 15:13 -0700
Message-ID<325fd2f4-097c-47b3-991f-62a2798e86ba@googlegroups.com>
In reply to#8200
Ringrazio tutti per i suggerimenti , vedrò di capitalizzarli

[toc] | [prev] | [next] | [standalone]


#8206

Fromfmassei@gmail.com
Date2017-05-11 11:44 -0700
Message-ID<12394d4f-811e-4597-a1ab-3212180fd7b5@googlegroups.com>
In reply to#8200
On Sunday, May 7, 2017 at 2:40:06 PM UTC-4, diego1966 wrote:
> <snip>

Giorni lavorativi tra due date: problema comune.
Non è possibile farlo come vuoi te. Ci vuole una base di dati per tenere i
festivi che l'azienda per cui fai il lavoro tiene in considerazione. Ci sono
aziende che lavorano anche a pasqua e altre che fanno ponti di una settimana.
Di solito si fa con una stored procedure su un qualsiasi DBMS, ed è una
operazione abbastanza semplice (differenza(-sabati/domeniche)-tutti i giorni
compresi tra le date che l'amministratore del sistema mette come festivi).
Di solito si fa sul DB perché è una di quelle operazioni che ti servono in
una o più views in ogni caso.
In JS si richiama in AJAX qualcosa lato server che ritorna il risultato di
una query.

Ciao!

[toc] | [prev] | [standalone]


Back to top | Article view | it.comp.lang.javascript


csiph-web