Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    493

    [c#] Routine per calcolo valore tra 2 date

    Ciao a tutti
    dovrei creare una routine e spero di avere qualche suggerimento perchè non ho idee al momento
    Lo scenario è questo: in un atabella il record è formato da data1, data2, valore:
    es: 01/10/2012 31/11/2015 24,00
    Mi chiedono di rricavare è il totale x dell'anno 2012, quale del 2013, ecc fino al 2015
    Qualcuno ha qualche suggerimento?
    Vi sarei grato
    Ciao

  2. #2
    ... personalmente non è che abbia capito tanto di quello che hai scritto

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    493
    Quote Originariamente inviata da sspintux Visualizza il messaggio
    ... personalmente non è che abbia capito tanto di quello che hai scritto
    Mi spiego meglio
    ho una tabella con 3 campi:
    DataInizio
    Datafine
    ValoreMensile
    esempio sul primo record:
    01/10/2012
    31/10/2015
    36,10
    -------------
    Mi viene chiesto di creare una routine che mi calcoli il totale per l'anno 2012, quanti per il 2013...fino al 2015
    quindi sarà
    36,10 x 3 (per l'anno 2012)
    36,10 x 12 (per l'anno 2013)
    ecc
    36,10 x 3 (per l'anno 2015)
    ----
    Spero di essere stato piu' chiaro.
    Grazie per il feedback

  4. #4
    Se il valore è memorizzato in un DB probabilmente conviene risolvere la questione direttamente con una query SQL... di che DB si tratta? Le date in che formato sono? (sono campi testo, data, interi con dentro un timestamp, ...)
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    493
    Quote Originariamente inviata da MItaly Visualizza il messaggio
    Se il valore è memorizzato in un DB probabilmente conviene risolvere la questione direttamente con una query SQL... di che DB si tratta? Le date in che formato sono? (sono campi testo, data, interi con dentro un timestamp, ...)
    Ciao Mitaly grazie per la risposta.
    I dati sono memorizzati in un db SQL Express; le date sono in formato date e il valore in decimal

  6. #6
    Uh sorry, rileggendo ho visto che avevo capito male il problema, la faccenda è un po' più complicata di come pensavo.

    Comunque, procederei in questa maniera: usa un Dictionary<int, decimal> per memorizzare i totali per ogni anno, quindi, per ogni riga esaminata:
    • se inizio e fine appartengono allo stesso anno, è facile: fai la differenza delle due date (con DateTime.Subtract); ottieni un valore TimeSpan. Dal numero di mesi di differenza ricavi il totale relativo all'unico anno considerato; aggiungi il valore ottenuto all'elemento del dictionary corrispondente all'anno; altrimenti:
    • per prima cosa considera l'anno della data di partenza; genera un nuovo oggetto Date relativo all'1 gennaio dell'anno successivo, fai anche qui la differenza e moltiplica il prezzo per il numero di mesi; aggiungi il valore ottenuto come sopra;
    • per ogni anno "intermedio" aggiungi al relativo elemento nel dictionary 12*valore mensile;
    • per l'ultimo anno, anche qui fai una differenza rispetto all'1 gennaio dell'anno in questione, calcola i mesi e aggiungi come sopra.
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.