Calcolare il numero di giorni compresi fra due date
Da Gambas-it.org - Wikipedia.
Versione del 13 feb 2018 alle 16:19 di Vuott (Discussione | contributi) (Creata pagina con "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 G...")
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( )": [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 l'Oggetto "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 dinamica condivisa: "libglib-2.0"
Mostriamo un esempio:
Library "libglib-2.0" 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, 1964) gd2 = g_date_new_dmy(3, 5, 1964) 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.