Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione realme 16 5G: lo smartphone con Selfie Mirror ha una batteria da 6550mAh
Recensione realme 16 5G: lo smartphone con Selfie Mirror ha una batteria da 6550mAh
realme 16 5G è un nuovo smartphone con sensore Sony IMX 852 da 50MP sul retro e uno specchio selfie fisico integrato nella camera bar, una prima nel segmento di mercato. Batteria da 6550mAh in un corpo da 8,1mm e 183g, certificazione IP69K e ricarica da 45W completano un pacchetto aggressivo per la fascia media, per uno dei prodotti più interessanti del produttore sul piano commerciale
Come rispettare tutte le nuove regole per i monopattini elettrici? La guida per non rischiare sanzioni
Come rispettare tutte le nuove regole per i monopattini elettrici? La guida per non rischiare sanzioni
Sono ormai definitive le nuove norme del Codice della Strada per i monopattini elettrici. Non solo targa e assicurazione, le regole sono tante e riguardano diversi aspetti, vi spieghiamo come evitare sanzioni che possono essere salate
DLSS 4.5: con Dynamic Frame Generation e MFG 6X NVIDIA alza la posta
DLSS 4.5: con Dynamic Frame Generation e MFG 6X NVIDIA alza la posta
DLSS 4.5 introduce Dynamic Multi Frame Generation e MFG 6X, permettendo fino a cinque frame generati per ogni frame renderizzato. I test su Cyberpunk 2077 e 007 First Light mostrano forti incrementi di FPS e riduzione della latenza su RTX 5090 Laptop. Migliorano fluidità, stabilità e qualità visiva.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 10-11-2011, 08:06   #1
karmo
Senior Member
 
L'Avatar di karmo
 
Iscritto dal: May 2004
Città: milano
Messaggi: 558
C# confronto datetime

ciao a tutti
ho un piccolo problema che non saprei come risolvere, devo dare in output il "turno" corrente di lavoro.
Se ad esempio ho 2 turni (1)09:00 - 18:00 e (2)18:00-09:00 e l'ora corrente è 08:30, il sistema mi deve dare in output il 2o turno che è a cavallo tra due giorni.
Come posso fare usando il datetime?
__________________
"ki ha scritto queste stronzate?" disse il cieco toccando la grattugia!
karmo è offline   Rispondi citando il messaggio o parte di esso
Old 10-11-2011, 08:18   #2
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da karmo Guarda i messaggi
ciao a tutti
ho un piccolo problema che non saprei come risolvere, devo dare in output il "turno" corrente di lavoro.
Se ad esempio ho 2 turni (1)09:00 - 18:00 e (2)18:00-09:00 e l'ora corrente è 08:30, il sistema mi deve dare in output il 2o turno che è a cavallo tra due giorni.
Come posso fare usando il datetime?
mmmh.

Codice:
DateTime dt=DateTime.Now;
string turno;
if (dt.Hour>=9 && dt.Hour<18)
   turno = "turno1";
else
   turno = "turno2";
No eh?
Meglio che spieghi un po' di piu'
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 10-11-2011, 08:20   #3
Kralizek
Senior Member
 
L'Avatar di Kralizek
 
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
che struttura usi per il turno di lavoro?
Kralizek è offline   Rispondi citando il messaggio o parte di esso
Old 10-11-2011, 08:25   #4
karmo
Senior Member
 
L'Avatar di karmo
 
Iscritto dal: May 2004
Città: milano
Messaggi: 558
i turni non li so a priori!! altrimenti avrei già risolto la cosa!
se faccio semplicemente
Datetime.Now() >= inizio turno e Datetime.Now() <= fineturno non basta!
perchè il 20 turno non viene gestito!
se adesso sono le 7, 7 non è maggiore di 18.

nel db ho una tabella che indica l'ora e i minuti di inizio e fine di ciascun turno.
esempio
Shift Description FromTime ToTime
DD 09:00-18:00 9.00 17.59
NN 18:00-09:00 18.00 8.59
__________________
"ki ha scritto queste stronzate?" disse il cieco toccando la grattugia!
karmo è offline   Rispondi citando il messaggio o parte di esso
Old 10-11-2011, 08:31   #5
karmo
Senior Member
 
L'Avatar di karmo
 
Iscritto dal: May 2004
Città: milano
Messaggi: 558
ok risolto, come non detto! devo splittare il turno e considerare la mezzanotte.

Codice:
foreach (Shift sh in GlobalVars.ShiftList)
            {
                string[] spl = sh.FromTime.ToString("00.00", provider).Split('.');
                Int32 HourFrom = Int32.Parse(spl[0]);
                Int32 MinutesFrom = Int32.Parse(spl[1]);
                spl = sh.ToTime.ToString("00.00", provider).Split('.');
                Int32 HourTo = Int32.Parse(spl[0]);
                Int32 MinutesTo = Int32.Parse(spl[1]);
                DateTime timeShiftStart = new DateTime(GetToday().Year, GetToday().Month, GetToday().Day, HourFrom, MinutesFrom, 0);
                DateTime timeShiftEnd = new DateTime(GetToday().Year, GetToday().Month, GetToday().Day, HourTo, MinutesTo, 0);
                DateTime timeShiftComparison = new DateTime(GetToday().Year, GetToday().Month, GetToday().Day, GetToday().Hour, GetToday().Minute, 0);

                if (timeShiftComparison >= timeShiftStart && timeShiftComparison <= timeShiftEnd)
                {
                    return sh.ShiftName;
                }

                if (timeShiftEnd < timeShiftStart)
                {
                    // shift 18:00 - 09:00
                    // devo considerare mezzanotte!
                    DateTime midnight1 = new DateTime(GetToday().Year, GetToday().Month, GetToday().Day, 23, 59, 59);
                    // mezzanotte del giorno dopo
                    DateTime midnight2 = new DateTime(GetToday().Year, GetToday().Month, GetToday().Day, 0, 0, 0);

                    if (((timeShiftComparison.Hour >= timeShiftStart.Hour) && (timeShiftComparison.Minute >= timeShiftStart.Minute)) 
                        &&
                        ((timeShiftComparison.Hour <= midnight1.Hour) && (timeShiftComparison.Minute <= midnight1.Minute))
                       )
                    {
                        return sh.ShiftName;
                    }
                    else if (((timeShiftComparison.Hour >= midnight2.Hour) && (timeShiftComparison.Minute >= midnight2.Minute))
                        &&
                        ((timeShiftComparison.Hour <= timeShiftEnd.Hour) && (timeShiftComparison.Minute <= timeShiftEnd.Minute))
                       )
                    {
                        return sh.ShiftName;
                    }
                }
            }
__________________
"ki ha scritto queste stronzate?" disse il cieco toccando la grattugia!
karmo è offline   Rispondi citando il messaggio o parte di esso
Old 10-11-2011, 08:32   #6
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da karmo Guarda i messaggi
i turni non li so a priori!! altrimenti avrei già risolto la cosa!
se faccio semplicemente
Datetime.Now() >= inizio turno e Datetime.Now() <= fineturno non basta!
perchè il 20 turno non viene gestito!
se adesso sono le 7, 7 non è maggiore di 18.

nel db ho una tabella che indica l'ora e i minuti di inizio e fine di ciascun turno.
esempio
Shift Description FromTime ToTime
DD 09:00-18:00 9.00 17.59
NN 18:00-09:00 18.00 8.59
Assunto: Immagino che ci sia un solo turno a cavallo di 2 giorni, e che non ci sia nemmeno un istante scoperto, ovvero i turni coprono tutte le 24h.
Se e' cosi', cerca qual e' l'unico turno a cavallo di 2 giorni.
Escludilo e tieni tutti gli altri.
Li percorri in ciclo cercando di vedere se l'ora corrente appartiene a quel particolare turno.
Se arrivi alla fine e non hai trovato allora si tratta del turno che avevi escluso, quello a cavallo.
Scrivi meta' di quello che hai scritto.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 10-11-2011, 08:44   #7
Kralizek
Senior Member
 
L'Avatar di Kralizek
 
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
piú che altro...

gugoXX che classe usi per mappare una specifica ora:minuti:secondi di un generico giorno?

DateTime é uno specifico istante nel tempo.
TimeSpan é un generico intervallo di tempo.

Ma sbaglio o nella bcl manca qualcosa orientato alla gestione del tempo?
Kralizek è offline   Rispondi citando il messaggio o parte di esso
Old 10-11-2011, 13:10   #8
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da Kralizek Guarda i messaggi
piú che altro...

gugoXX che classe usi per mappare una specifica ora:minuti:secondi di un generico giorno?

DateTime é uno specifico istante nel tempo.
TimeSpan é un generico intervallo di tempo.

Ma sbaglio o nella bcl manca qualcosa orientato alla gestione del tempo?
Ma, senza complicarsi troppo io userei una stringa HH:MM:SS
sulla quale si possono usare tutti i comparer standard e operatori come > < etc.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione realme 16 5G: lo smartphone con Selfie Mirror ha una batteria da 6550mAh Recensione realme 16 5G: lo smartphone con Selfi...
Come rispettare tutte le nuove regole per i monopattini elettrici? La guida per non rischiare sanzioni Come rispettare tutte le nuove regole per i mono...
DLSS 4.5: con Dynamic Frame Generation e MFG 6X NVIDIA alza la posta DLSS 4.5: con Dynamic Frame Generation e MFG 6X ...
Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere) Plaud NotePin S, il registratore IA si fa indoss...
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro Redmi Watch 6 in prova: lo smartwatch con ampio ...
PowerToys si aggiorna alla versione 0.10...
La nuova Audi Q7 proietta le frecce sull...
Framework blocca tutto: Laptop 13 Pro no...
SSD, Biwin investe oltre metà del...
Samsung Trend Radar 2026: smartphone e s...
Enel entra nella telefonia mobile: il vi...
Arriva il menu contestuale aggiornato di...
GM punta sulle batterie al sodio per lo ...
Instagram amplia il controllo sull'algor...
Jason Wild: "Siamo bravissimi a ris...
Razer BlackShark V2 X a 34,99€: cuffie e...
d-Matrix avvia la produzione di Corsair:...
I guardrails di Claude Fable 5 fanno sca...
Phanteks Evolv Series S2 a 99€: il case ...
Quasi un milione di passaporti esposti: ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 15:56.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v