Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HONOR CHOICE Projector Air Pro: piccolo, portatile e con Netflix
HONOR CHOICE Projector Air Pro: piccolo, portatile e con Netflix
Un proiettore economico, che fa della portabilità e immediatezza i suoi punti di forza. Adatto per una camera da letto o per la casa vacanze, è basato su sistema proprietario Linux ma offre piena compatibilità ufficiale a Netflix
ASUS ProArt GoPro Edition è il notebook compatto per chi crea
ASUS ProArt GoPro Edition è il notebook compatto per chi crea
Un notebook sviluppato in collaborazione con GoPro ma che risponde al meglio alle necessità di tutti coloro che creano contenuti video: robustezza, design, potenza di calcolo e funzionalità si abbinano al meglio tra di loro, pur se a prezzo di un costo elevato per via della tanta memoria onboard
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090
Ho affidato ai due modelli lo stesso mestiere ma non lo stesso identico prompt: trasformare una storia illustrata in un video usando una RTX 3090 e modelli locali. Ne sono usciti due film, due applicazioni e due idee opposte di efficienza. Fucina, progettata con Fable 5, colpisce di più nei primi secondi. Storyboard Studio, costruito con ChatGPT/Codex, regge meglio sulla distanza e vince il confronto complessivo, ma di stretta misura
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


HONOR CHOICE Projector Air Pro: piccolo, portatile e con Netflix HONOR CHOICE Projector Air Pro: piccolo, portati...
ASUS ProArt GoPro Edition è il notebook compatto per chi crea ASUS ProArt GoPro Edition è il notebook c...
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090 Fable e Sol a confronto: due cartoni animati cre...
Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile Il tablet rugged leggero e sottile: Lenovo Think...
AMD Advancing AI 2026: l'hardware AMD per le elaborazioni IA del futuro, tra GPU, CPU e robot AMD Advancing AI 2026: l'hardware AMD per le ela...
ECOVACS T80 OMNI, super rapporto prezzo/...
Su Hugging Face non serve un trucco: set...
Roborock Saros 20 a 999€ (listino di 1.4...
GOG Galaxy sbarca su Linux: confermato l...
Roborock Qrevo Curv 2 Pro a 699€: robot ...
Claude ha trovato in 60 ore una falla cr...
Robot tagliaerba ECOVACS Goat A1600 LiDA...
Bending Spoons prepara nuovi acquisti: a...
Ma quanto è bello lo smartwatch OPPO Wat...
Apple prepara i nuovi Watch Series 12 e ...
Resident Evil potrebbe diventare una ser...
Galaxy S27 Ultra e la variante Pro: la s...
X lancia X Money, la piattaforma di paga...
Sega Dreamcast: la console continua a vi...
Oggi su Amazon 2 monitor 4K ASUS e LG 27...
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: 08:59.


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