Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    1

    Gestione dati in delphi

    Ciao ragazzi. Qualcuno mi sa dire come calcolare dinamicamente in delphi la data corrente in formato aaaammgg (es 20040413)e da quel valore sapere la data del venerdì precedente (sempre in quel formato, es 20040409)?

    Grazie
    Dario
    Vdario

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301

    Re: Gestione dati in delphi

    Originariamente inviato da vdario
    Ciao ragazzi. Qualcuno mi sa dire come calcolare dinamicamente in delphi la data corrente in formato aaaammgg (es 20040413)e da quel valore sapere la data del venerdì precedente (sempre in quel formato, es 20040409)?
    In passato ho avuto anche io la necessità di costruire una stringa che rappresentasse la data usando il formato AAAAMMGG; si è rivelata utile come nome di file che consente di ottenere, da Gestione Risorse, un ordinamento corretto e "pesato" dei file, dal più vecchio al più recente.

    Ti posto una porzione di codice che puoi inserire all'interno di una funzione creata da te:
    codice:
    function DateToYYYYMMDD(const ADate: TDateTime): string;
    var
      Y, M, D: Word;
    begin
      DecodeDate(ADate, Y, M, D);
      Result := Format('%.2d', [Y])
       + Format('%.2d', [M]) 
       + Format('%.2d', [D]);
    end;
    La data ADate viene "spezzettata" usando DecodeDate nelle sue componenti di giorno, mese e anno che vengono poi ricomposti nell'ordine desiderato all'interno di una stringa, facendo in modo che ciascuna componente abbia il numero di cifre desiderato (la cifra "0", zero, viene usata per il "padding").

    Per calcolare la data risalente alla settimana precedente rispetto alla data passata come parametro, ti conviene lavorare unicamente sul valore espresso come TDateTime e non sulla forma in stringa già convertita.

    Delphi ti mette a disposizione alcune funzioni interessanti, contenute nella unit DateUtils.pas, per eseguire i calcoli più comuni e non su date e ore.

    Ad esempio, IncWeek ti permette di incrementare un valore data/ora (TDateTime) di una settimana; specificando un intervallo negativo, puoi "indietreggiare" di una settimana.

    Se consulti la Guida in linea, troverai altre funzioni di questo tipo con le quali puoi costruire virtualmente qualsiasi algoritmo che ti interessa per risalire alla data/ora voluta.

    Al termine dell'operazione, puoi convertire nuovamente il valore TDateTime in stringa usando la funzione che ti ho riportato sopra.

    Prova a fare qualche esperimento, poi mi saprai dire.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

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 © 2024 vBulletin Solutions, Inc. All rights reserved.