Italian Giorno della settimana con B4i

toro1950

Active Member
Licensed User
tramite questo codice riesco ad ottenere il giorno della settimana
B4X:
    oggi =DateUtils.GetDayOfWeekName(DateTime.DateParse(testo))
dove la variabile testo contiene la data in formato mm/gg/anno
purtroppo questo codice non funziona con B4i, fa uscire l'app senza nessun avviso, ho provato con tutti i formati possibili delle
date senza nessun risultato, ho inserito la libreria iDateUtils, c'è qualche altro modo per trovare il giorno della settimana su B4i?
 

Sagenut

Expert
Licensed User
Longtime User
Prova a postare un pezzo di codice completo di dati.
Non uso B4i però mi pare strano che non funzioni.
DateUtils dovrebbe essere uguale in tutti e 3 gli ambienti.
 

toro1950

Active Member
Licensed User
Non hai tutti i torti Sagenut, però la risposta è diversa, su b4a i giorni sono in italiano, sub b4i i giorni sono in inglese, l'app si bloccava su una routine sul da farsi rispetto ai giorni, ora tutte le variabili del giorno dovrò cambiarle in inglese, non penso che si possa cambiare la lingua su DateUtils o si? magari
 

Filippo

Expert
Licensed User
Longtime User
Non hai tutti i torti Sagenut, però la risposta è diversa, su b4a i giorni sono in italiano, sub b4i i giorni sono in inglese, l'app si bloccava su una routine sul da farsi rispetto ai giorni, ora tutte le variabili del giorno dovrò cambiarle in inglese, non penso che si possa cambiare la lingua su DateUtils o si? magari
Prova a usare la funzione "DateTime.DateFormat" e vedrai che funziona anche in B4i.
B4X:
    Dim testo As String = "01/01/2024"
    DateTime.DateFormat = "dd/MM/yyyy"
    Dim oggi As String = DateUtils.GetDayOfWeekName(DateTime.DateParse(testo))
 

Sagenut

Expert
Licensed User
Longtime User
Prova ad aggiungere queste righe
B4X:
#If B4i
   Dim loc As NativeObject
   loc = loc.Initialize("NSLocale").RunMethod("localeWithLocaleIdentifier:", Array("it_IT"))
   Dim no As NativeObject = DateTime
   no.GetField("dateFormat").SetField("locale", loc)
   no.GetField("timeFormat").SetField("locale", loc)
#End If
 

Sagenut

Expert
Licensed User
Longtime User
Non ho B4i ma proverei il breve codice di Filippo, suppongo che il nome del giorno sarà in italiano (lunedì, nell'esempio), che dipenda dal dispositivo.
Mi affiderei anche io al codice di @Filippo visto che usa attivamente B4i al contrario del sottoscritto.
 

Filippo

Expert
Licensed User
Longtime User
Se poi ci facessero sapere... entro poco tempo, che so' nervoso 😁
Mi dispiace, ma la funzione restituisce sempre il nome in inglese.
La cosa più semplice sarebbe usare "DateTime.GetDayOfWeek(DateTime.DateParse(testo))", che restituisce il numero del giorno da 1-7.

1734789687943.png
 

toro1950

Active Member
Licensed User
Ho provato anchio , la restituisce sempre in inglese, ho dovuto solo sostuire 7 stringhe
B4X:
If oggi<>"" Then
        If oggi ="Monday" Then testo=lune
        If oggi ="Tuesday" Then testo=mart
        If oggi ="Wednesday" Then testo=merc
        If oggi ="Thursday" Then  testo=giov
        If oggi ="Friday" Then testo=vene
        If oggi ="Saturday" Then testo=saba
        If oggi ="Sunday" Then testo=dome
non vale la pena fare altre prove a meno che non dipende dall'iphone utilizzato
 

toro1950

Active Member
Licensed User
Visto che mi ritrovo sempre con voi, una domanda, ho sviluppato le due app, mangiando viene l'appetito cosi ho sviluppato altre due piccole app che preleveranno i dati dell due app principali, per far questo per il momento sto utilzzando il mio sito, ma vorrei utilizzare un server ma non sono pratico, a parte i costi è difficile utilzzarlo? dovrei fare l'accesso sia in ftp che in http, possibile farlo?
 

LucaMs

Expert
Licensed User
Longtime User
Ho provato anchio , la restituisce sempre in inglese, ho dovuto solo sostuire 7 stringhe
B4X:
If oggi<>"" Then
        If oggi ="Monday" Then testo=lune
        If oggi ="Tuesday" Then testo=mart
        If oggi ="Wednesday" Then testo=merc
        If oggi ="Thursday" Then  testo=giov
        If oggi ="Friday" Then testo=vene
        If oggi ="Saturday" Then testo=saba
        If oggi ="Sunday" Then testo=dome
non vale la pena fare altre prove a meno che non dipende dall'iphone utilizzato
Puoi semplificare e migliorare la cosa.
B4X:
    Dim lstGiorni As List
    lstGiorni.Initialize
    lstGiorni.AddAll(Array As String ("Domenica", "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato"))

    Dim GiornoSettimana As Int
    GiornoSettimana = DateTime.GetDayOfWeek(DateTime.Now) - 1 ' Da 0 a 6 - 0 = Domenica

    Log("Oggi: " & lstGiorni.Get(GiornoSettimana))

Oppure, volendo usare i nomi inglesi, come hai fatto, puoi usare una Map, con i nomi inglesi come chiavi e quelli italiani come valori.
 
Last edited:

LucaMs

Expert
Licensed User
Longtime User
a parte i costi è difficile utilzzarlo? dovrei fare l'accesso sia in ftp che in http, possibile farlo?
E' possibile fare entrambe le cose "contemporaneamente" ma bisogna vedere se sia il caso.
"Facile", dipende, creare un server non è facilissimo ma nemmeno difficilissimo.
Costi: anche gratuitamente (entro certi limiti).
Apri un altro thread e dai più informazioni, possibilmente.
 
Top