Jak zwrócić nazwę dnia tygodnia sobota?

Jak zwrócić nazwę dnia tygodnia sobota?
GO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 38
0

Firebird 2.5.3 i środowisko Linux.

Kopiuj
 int EXPORT test_wday(ISC_QUAD *d) {
        struct tm t;
        ISC_QUAD *data = (ISC_QUAD *) malloc(sizeof (ISC_QUAD));
        isc_decode_date(d, &t);
	    //t.tm_wday=9;
	    //mktime(&t);  //odkomentowanie odbudowuje błędną wartość tego pola pochodnego z 9 ale zawsze na 3  w przypadku soboty. 
        return  t.tm_wday;
}

DECLARE EXTERNAL FUNCTION tmwday DATE RETURNS INTEGER BY VALUE ENTRY_POINT 'test_wday' MODULE_NAME 'myudf'

Ten kod zawsze zwraca mi wartość 3 dla każdej środy (poprawnie ) i ... każdej soboty.

A tu poniższy kod w pliku wykonywalnym poprawnie zwróci 6.

Kopiuj
#include <stdio.h>
#include <string.h>
#include <time.h>

int main(void) {
    struct tm t;
    memset(&t, 0, sizeof(t));

    t.tm_mday = 28;
    t.tm_mon = 9;
    t.tm_year = 2023-1900;

    mktime(&t);

    printf("%d\n", t.tm_wday);

    return 0;
}
Althorion
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1620
0

Jest jakiś konkretny powód, dla którego używasz dziewięcioletniej wersji Firebirda?

kq
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
0

Kod wygląda ok, poza tym, że wyciekasz pamięć w data. mktime() nie rusza pól tm_wday i tm_yday. Ciężko znaleźć jakąś sensowną dokumentację, ale wydaje się, że isc_decode_date używasz poprawnie (przynajmniej takie przykłady kodu zwracał google)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.