Newsgroup: it.comp.lang.visual-basic
Titolo: conversione date in formato unix timestamp

Ciao,
sto scrivendo una piccola applicazione con VB2500 Express che va ad 
interagire con un database Mysql già esistente.
Tra le varie cose, devo andare a leggere/scrivere dei campi contenenti 
date in formato unix timestamp.
Per le query di lettura utilizzo la funzione mysql
FROM_UNIXTIME(data, '%d/%m/%Y')
e fin qui tutto bene...
Però in scrittura non so come fare...
In pratica ho un controllo DateTimePicker con il quale l'utente 
inserisce la data... ora questa dovrei convertirla in formato Unix 
Timestamp... solo che non ho la più pallida idea di come procedere!
Scusate il lessico "da nevrosi" :-) (spero comunque sia comprensibile!) 
ma sono due ore che ci sto sbattendo la testa
Qualche idea?
grazie  :-)
m.

 formato Unix Timestamp... solo che non ho la più pallida idea di come procedere!
Format$ permette di usare formati definiti dall'utente.
Prova questo nella debug window:
 ? Format$(now , "dd-mm-yyyy hh:mm:ss")
"05-14-2006 01.14.20"
Giocando opportunamente con la stringa di formato dovresti poter
ottenere quello che vuoi.
Bye, G. 

 grazie  :-)
...spero di esserti stato utile :-)
Inviato da X-Privat.Org - Registrazione gratuita 
http://www.x-privat.org/join.php

 Unix parta dal 01/01/1970 contanto i...?
Si contano i secondi.
Si potrebbe provare una cosa del genere, ma non garantisco in senso 
assoluto ;-)
Function DeteToTimestamp(ByVal data As Date) As Double
     Return (data - New DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds
End Function
-- 
news://it-alt.comp.software.openoffice : Il newsgroup dedicato a
OpenOffice.org, la suite open source di applicazioni per ufficio.
Saluti, VITRIOL


Grazie, appena torno a casa riprovo.  :-)
Ho comunque dimenticato di dire che mi interessa memorizzare solo la 
data, non l'orario preciso... nel caso cambiasse qualcosa
m.

 Senti, puoi prestarmi la macchina del tempo ? Solo un attimo ;-)
Beh?
E' VbDuemilaECinque... che c'è di strano? ;)
Ciao 

Fabio ha scritto:

Dipende dal formato della data  :-P
m.

prova a convertire in serial la data... mi sembra di ricordare che esista 
uan storia del genere....
date serial che e' un numero univoco per identificare quel preciso 
istante....
poi fai la sottrazione (mi sembra)..... scusa ma giocavo con le date 
all'epoca del vb1 adesso al massimo uso il NOW....
"Paperino" <non...@lo.dico> ha scritto nel messaggio 
news:e3e21t$1i1s$1...@stargate1.inet.it...


Secondo me una cosa del genere dovrebbe funzionare:
Dim ts As TimeSpan = (DateTime.UtcNow - New DateTime(1970, 1, 1))
Dim myTimeStamp = CType(ts.TotalSeconds,Integer)

 che non ho la più pallida idea di come procedere!
Purtroppo adesso non ho sottomano del codice, quindi non mi ricordo il 
formato esatto.
Cmq...io usavo un formato particolare, che non mi ricordo assolutamente da 
dove fosse saltato fuori, che era praticamente un formato standard verso ADO 
che poi provvedeva a convertirlo automaticamente nel formato del DB.
O almeno, ricordo di averlo usato con successo con Access, SQL Server, DBF e 
Oracle.
Solo che, appunto, non mi ricordo com'era fatto ^__^
Era un qualcosa racchiuso tra parentesi graffe e con un dichiaratore di 
formato davanti...appena lo ritrovo te lo mando...
Uh, trovate:
Function SQLdate(D As Date) As String
     SQLdate = "{d '" & Format$(D, "yyyy\-mm\-dd") & "'}"
End Function
Function SQLDateTime(D As Date) As String
     SQLDateTime = "{ts '" & Format$(D, "yyyy\-mm\-dd hh\:mm\:ss") & "'}"
End Function
Function SQLtime(H As Date) As String
     SQLtime = "{t '" & Format$(H, "hh\:mm\:ss") & "'}"
End Function
Pare che sia lo standard ODBC...beh, non chiedermi perche', ma a me ha 
sempre funzionato con ADO senza usare un driver ODBC :-D
Facci sapere :-)

 date in formato unix timestamp.
RISOLTO... grazie all'aiuto di tutti! :-)
Ecco come ho fatto:
Ho creato la funzione SQLdate
Function SQLdate(ByVal datain As Date) As String
     Dim sqldataris As String
     sqldataris = Format$(datain, "yyyy\-MM\-dd")
     Return sqldataris
End Function
Da notare che per indicare i mesi ho usato il formato 'MM' e non 'mm' 
che invece restituisce, presumo, i minuti.
Poi la mia query di scrittura:
query_salva = "INSERT INTO corrispondenza (data) VALUES 
(unix_timestamp('" & SQLdate(datData.Value) & "'))"
Grazie mille a quanti si sono prodigati!  :-)
m.