Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di Gugu
    Registrato dal
    Nov 2002
    Messaggi
    523

    [vb.net] Problema con conversione date.

    Ciao ragazzi,
    premetto che passo ora a vb.net e più che apprezzarne le modifiche migliorative.. sto bestemm... perchè devo lottare per fare cose che con vb6 andavo via sparato!!

    Ho cercato nel forum prima di postare ma senza risultati soddisfacenti.

    Il mio problema è che da un file testo ottengo una data.
    Questa data potrebbe essere in qualsiasi formato:
    MM/dd/yy
    dd/MM/yy
    .. ad esempio.

    Bene, il contenuto del file di testo è ovviamente una stringa e va converita. Ho provato in questo modo:

    codice:
    dim MiaData as Date
    dim StringaTxt as string 'la data dal mio file testo
    
    '..codice per leggere il file testo..
    MiaData = Cdate(StringaTxt) 'Qui mi da errore!!!!
    StringaTxt = Format(MiaData, "dd/MM/yy")
    Il codice è molto semplice.. però non funzia per tutti i formati!
    Se in StringaTxt c'è ad esempio "24/04/03" funziona, se c'è "04/24/03" da un errore! Non si accorge automaticamente che la data è del formato "MM/dd/yy"?
    Come faccio a dire a MiaData che sarà riempita con una data di quel tipo?

    Grazie
    Ciao
    Gugu
    Ciao
    Andrea

  2. #2
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    provato a fare
    codice:
    MiaData = StringaTxt.ToShortDate
    :master:

  3. #3
    Utente di HTML.it L'avatar di biste
    Registrato dal
    Apr 2001
    Messaggi
    877
    Se sai che le date ti possono arrivare soltanto in questi 2 formati il primo metodo che mi viene in mente è provare a mettere la tua data in una variabile... se dà errore vuol dire che la data è in formato inglese (MM/dd/yy) e allora la giri manualmente.
    Non è un bellissimo metodo, ma è l'unico che ho in mente ora

    codice:
    Dim miaData As DateTime
    Try
        MiaData = Convert.ToDateTime(StringaTxt)
    Catch ex As InvalidCastException
    'La data è inglese e quindi la devi girare nel formato che vuoi
    End Try
    HTH
    UGIdotNET
    Microsoft .NET MCAD
    C++, C#, VB6, VB.NET, ASP, ASP.NET
    SQL Server 2000

  4. #4
    Utente di HTML.it L'avatar di Gugu
    Registrato dal
    Nov 2002
    Messaggi
    523
    Ciao ragazzi,
    grazie per gli aiuti..

    x darkblOOd:
    Scusa ma non riesco a capire.. mi da un errore se faccio StringaTxt.ToShortDate!
    Sei sicura?

    Boo..

    Per intanto faccio così...
    ..però non è bello!!!!!

    codice:
    If IsDate(Novita(0)) Then
        DataNovita = Convert.ToDateTime(Novita(0))
    Else
        DataTxt = Split(Novita(0), "/")
        Novita(0) = DataTxt(1) & "/" & DataTxt(0) & "/" & DataTxt(2)
        DataNovita = Convert.ToDateTime(Novita(0))
    End If
    Aspetto suggerimenti per un codice più elegante...
    Ripeto, grazie comunque per l'aiuto!

    Ciao
    Gugu
    Ciao
    Andrea

  5. #5
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    Originariamente inviato da Gugu
    x darkblOOd:
    Scusa ma non riesco a capire.. mi da un errore se faccio StringaTxt.ToShortDate!
    Sei sicura?
    hai ragione, ho sbagliato. quel metodo lo hanno solo i tipi DATE.

    se ho tempo faccio qualche prova e ti faccio sapere

    ps: sono m, ti ha tratto in inganno l'avatar vero?

  6. #6
    Utente di HTML.it L'avatar di Gugu
    Registrato dal
    Nov 2002
    Messaggi
    523
    Alla fine ho scoperto qual'è il mio effettivo problema..
    se ho una stringa tipo: "01/05/2003", quindi chiaramente convertibile in data (badate bene che si intende il primo maggio..non il 5 gennaio!) e faccio il cdate(MiaStringa), quel bast.. mi restituisce la data in formato sbagliato!! ..cioè #05/01/2003#. Da cosa dipende? dalle impostazioni internazionali? (ho italia dappertutto) dalla lingua del visual studio net? (inglese)
    oppure da che???

    Grazie e ciao
    Gugu
    Ciao
    Andrea

  7. #7
    Utente di HTML.it L'avatar di biste
    Registrato dal
    Apr 2001
    Messaggi
    877
    Il formato che usa il framework per memorizzare le date è MM/gg/aaaa non lo puoi cambiare.
    UGIdotNET
    Microsoft .NET MCAD
    C++, C#, VB6, VB.NET, ASP, ASP.NET
    SQL Server 2000

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.