Differenze tra le versioni di "Calcolare il numero di giorni compresi fra due date"

Da Gambas-it.org - Wikipedia.
 
(3 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
 
Per ottenere il calcolo del numero di giorni compresi fra due date, anche appartenenti ad anni diversi, è possibile adottare alcune soluzioni.
 
Per ottenere il calcolo del numero di giorni compresi fra due date, anche appartenenti ad anni diversi, è possibile adottare alcune soluzioni.
 
  
 
==Uso delle sole risorse di Gambas==
 
==Uso delle sole risorse di Gambas==
Potremo adottare le sole risorse di Gambas, come ad esempio la funzione "''DateDiff( )''", impostando in particolare il secondo parametro attuale con la costante ''gb.Day'' nativa di Gambas: <SUP>&#091;[[#Note|Nota 1]]&#093;</sup>
+
Potremo adottare le sole risorse di Gambas, come ad esempio la funzione "DateDiff()", impostando in particolare il secondo parametro attuale con la costante ''gb.Day'' nativa di Gambas: <SUP>&#091;[[#Note|nota 1]]&#093;</sup>
  '''Public''' Sub Main()
+
  Public Sub Main()
 
    
 
    
 
   Print DateDiff(Date(1964, 1, 4, 0, 0, 0, 0), Date(1969, 8, 21, 0, 0, 0, 0), gb.Day)
 
   Print DateDiff(Date(1964, 1, 4, 0, 0, 0, 0), Date(1969, 8, 21, 0, 0, 0, 0), gb.Day)
 
    
 
    
  '''End'''
+
  End
  
  
Potremo anche utilizzare l'Oggetto "''DateBox''" e in particolare la sua proprietà "''.Value''", magari impostando manualmente la data sul ''DateBox'': <SUP>&#091;[[#Note|Nota 2]]&#093;</sup>
+
Potremo anche utilizzare il Controllo grafico ''DateBox'' e in particolare la sua Proprietà ".Value", magari impostando manualmente la data sul ''DateBox'': <SUP>&#091;[[#Note|nota 2]]&#093;</sup>
  '''Public''' Sub Button1_Click()
+
  Public Sub Button1_Click()
 
    
 
    
 
   Print DateBox2.Value - DateBox1.Value
 
   Print DateBox2.Value - DateBox1.Value
 
    
 
    
  '''End'''
+
  End
  
  
Riga 22: Riga 21:
 
Si potrà anche fare uso di alcune funzioni esterne del API di Glib-2.0.
 
Si potrà anche fare uso di alcune funzioni esterne del API di Glib-2.0.
  
E' necessario in tal caso avere installata nel sistema e richiamare in Gambas la libreria dinamica condivisa: "''libglib-2.0''"
+
E' necessario in tal caso avere installata nel sistema e richiamare in Gambas la libreria condivisa: "''libglib-2.0.so.0.7200.4'' ".
  
 
Mostriamo un esempio:
 
Mostriamo un esempio:
  Library "libglib-2.0"
+
  Library "libglib-2.0:0.7200.4"
 
   
 
   
 
  Public Struct GDate
 
  Public Struct GDate
Riga 49: Riga 48:
 
   
 
   
 
   
 
   
  '''Public''' Sub Main()
+
  Public Sub Main()
 
    
 
    
 
   Dim gd1, gd2 As GDate
 
   Dim gd1, gd2 As GDate
 
   Dim giorni As Integer
 
   Dim giorni As Integer
   
+
  gd1 = g_date_new_dmy(1, 5, 1964)
+
  gd1 = g_date_new_dmy(1, 5, 2004)
  gd2 = g_date_new_dmy(3, 5, 1964)
+
  gd2 = g_date_new_dmy(3, 5, 2004)
 
 
  giorni = g_date_days_between(gd1, gd2)
 
 
 
  Print giorni
 
 
    
 
    
 +
  giorni = g_date_days_between(gd1, gd2)
 +
 
 +
  Print giorni
 +
 
 
  <FONT Color=gray>' ''Libera la memoria precedentemente occupata da libglib-2.0:''</font>
 
  <FONT Color=gray>' ''Libera la memoria precedentemente occupata da libglib-2.0:''</font>
  g_date_free(gd2)
+
  g_date_free(gd2)
  g_date_free(gd1)
+
  g_date_free(gd1)
 
+
 
  '''End'''
+
  End
 
 
  
  

Versione attuale delle 20:21, 29 nov 2023

Per ottenere il calcolo del numero di giorni compresi fra due date, anche appartenenti ad anni diversi, è possibile adottare alcune soluzioni.

Uso delle sole risorse di Gambas

Potremo adottare le sole risorse di Gambas, come ad esempio la funzione "DateDiff()", impostando in particolare il secondo parametro attuale con la costante gb.Day nativa di Gambas: [nota 1]

Public Sub Main()
 
 Print DateDiff(Date(1964, 1, 4, 0, 0, 0, 0), Date(1969, 8, 21, 0, 0, 0, 0), gb.Day)
 
End


Potremo anche utilizzare il Controllo grafico DateBox e in particolare la sua Proprietà ".Value", magari impostando manualmente la data sul DateBox: [nota 2]

Public Sub Button1_Click()
 
 Print DateBox2.Value - DateBox1.Value
 
End


Uso di alcune funzioni esterne del API di Glib-2.0

Si potrà anche fare uso di alcune funzioni esterne del API di Glib-2.0.

E' necessario in tal caso avere installata nel sistema e richiamare in Gambas la libreria condivisa: "libglib-2.0.so.0.7200.4 ".

Mostriamo un esempio:

Library "libglib-2.0:0.7200.4"

Public Struct GDate
  julian_days As Integer
  julian As Integer
  dmy As Integer
  day As Integer
  month As Integer
  year As Integer
End Struct

' GDate * g_date_new_dmy (GDateDay day, GDateMonth month, GDateYear year)
' Allocates a GDate, initializes it to a sane state, and sets the value of the date.
Private Extern g_date_new_dmy(gday As Byte, gmonth As Integer, gyear As Short) As GDate

' gint g_date_days_between (const GDate *date1, const GDate *date2)
' Computes the number of days between two dates.
Private Extern g_date_days_between(date1 As GDate, date2 As GDate) As Integer

' void g_date_free (GDate *date)
' Frees a GDate returned from g_date_new().
Private Extern g_date_free(g_date As GDate)


Public Sub Main()
 
 Dim gd1, gd2 As GDate
 Dim giorni As Integer

 gd1 = g_date_new_dmy(1, 5, 2004)
 gd2 = g_date_new_dmy(3, 5, 2004)
  
 giorni = g_date_days_between(gd1, gd2)
 
 Print giorni
 
' Libera la memoria precedentemente occupata da libglib-2.0:
 g_date_free(gd2)
 g_date_free(gd1)
 
End


Note

[1] Questa soluzione è stata suggerita dal membro tornu

[2] Questa soluzione è stata suggerita dal membro Gianluigi.