stoc ercando di suare la data del server come riferimento....
var dd = new Date(<%=Date()%>);
alert("la data: "+dd.getDate()+"/"+dd.getMonth()+"/"+dd.getFullYear() );
in questo caso ottengo qualcosa del genere...
1/0/1970
:master:
stoc ercando di suare la data del server come riferimento....
var dd = new Date(<%=Date()%>);
alert("la data: "+dd.getDate()+"/"+dd.getMonth()+"/"+dd.getFullYear() );
in questo caso ottengo qualcosa del genere...
1/0/1970
:master:
La data in javascript si crea con uno dei suoi costruttori:
new Date(yr_num, mo_num, day_num
[, hr_num, min_num, sec_num, ms_num])
parametri obbligati:
yr_num, mo_num, day_num
Integer values representing part of a date. As an integer value, the month is represented by 0 to 11 with 0=January and 11=December.
parametri opzionali:
hr_num, min_num, sec_num, ms_num
Integer values representing part of a date.
Da cui ovviamente la parte server:
codice:<head runat="server"> <title>Pagina senza titolo</title> <script language="javascript" type="text/javascript"> // <!CDATA[ window.onload = window_onload; function window_onload() { var data_server = new Date( <%=DateTime.Now.Year%>, /* anno */ <%=DateTime.Now.Month - 1 %>, /* mese - 1 */ <%=DateTime.Now.Day %>, /* giorno */ <%=DateTime.Now.Hour %>, /* ora */ <%=DateTime.Now.Minute %>, /* minuto */ <%=DateTime.Now.Second %> );/* secondo */ //Data formattata g/m/aaaa alert("La data del server è: " + data_server.toStringDate()); } Date.prototype.toStringDate = function () { return this.getDate() + "/" + (this.getMonth() + 1) + "/" + this.getFullYear() } // ]]> </script> </head>
l'html prodotto è:
codice:<script language="javascript" type="text/javascript"> // <!CDATA[ window.onload = window_onload; function window_onload() { var data_server = new Date( 2007, /* anno */ 3, /* mese - 1 */ 14, /* giorno */ 9, /* ora */ 32, /* minuto */ 18 );/* secondo */ //Data formattata g/m/aaaa alert("La data del server è: " + data_server.toStringDate()); } Date.prototype.toStringDate = function () { return this.getDate() + "/" + (this.getMonth() + 1) + "/" + this.getFullYear() } // ]]> </script>
Pietro
in ActionScript si crea anche con il timestamp, sicuro non basti quello? (AS è ECMAScript come JS)Originariamente inviato da pietro09
La data in javascript si crea con uno dei suoi costruttori:
new Date(yr_num, mo_num, day_num
[, hr_num, min_num, sec_num, ms_num])
new Date(1263764827);
o forse in millisecondi
new Date(1263764827000);
Originariamente inviato da andr3a
in ActionScript si crea anche con il timestamp, sicuro non basti quello? (AS è ECMAScript come JS)
new Date(1263764827);
o forse in millisecondi
new Date(1263764827000);
se domanda ad agenti {return;} altrimenti {
1) dato che la domanda forse si riferiva ad asp, ho pensato di suggerire ad agenti di guardare la sintassi javascript. Tra i costruttori di Data, forse quello più facile, da asp, è quello di fornire Anno, Mese-1, Giorno, ora, minuto, secondo.
2) ho la faccia a terra ma non so che cosa sia ActionScript
}
Pietro
ripeto, non so se va .. ma credo che la più facile sia questa, o no?Originariamente inviato da pietro09
Tra i costruttori di Data, forse quello più facile, da asp, è quello di fornire Anno, Mese-1, Giorno, ora, minuto, secondo.
new Date(<%=(DateTime.Now.ToFileTime() / 10000)%>)
Originariamente inviato da andr3a
ripeto, non so se va .. ma credo che la più facile sia questa, o no?
new Date(<%=(DateTime.Now.ToFileTime() / 10000)%>)
con questo esempio:
ottengo:codice:var data_server = new Date( <%=DateTime.Now.Year%>, /* anno */ <%=DateTime.Now.Month - 1 %>, /* mese - 1 */ <%=DateTime.Now.Day %>, /* giorno */ <%=DateTime.Now.Hour %>, /* ora */ <%=DateTime.Now.Minute %>, /* minuto */ <%=DateTime.Now.Second %> );/* secondo */ var dd = new Date(<%=((DateTime.Now.ToFileTime() / 10000)).toString(nfi)%> ); //Data formattata g/m/aaaa document.getElementById("div1").innerHTML = data_server + " " + dd ;
Sat Apr 14 13:13:22 UTC+0200 2007
Tue Apr 13 13:13:22 UTC+0200 2376
Questo perchè quello che dici è vero, ma a patto che il numero seriale data parta da una stessa data in javascript e in asp o php, che mi pare non sia.
ps.
DateTime.Now.ToFileTime() / 10000)).toString(nfi)
ho dovuto convertire il numero della divisione in stringa formattata col punto decimale, altrimenti avevo errore con la virgola.
Pietro
uhm, solitamente i timestamp sono tutti uguali, partono dal 1/1/1970, mi sembra strano non ci sia un modo di convertire una data in time con un solo metodo, magari è così e .NET sfrutta una data file tutta sua, anche se sono certo basti indagare un pò per capire il perchè di quegli esatti 369 anni di differenza e come ovviare.
i 369 anni si trovano subitoOriginariamente inviato da andr3a
uhm, solitamente i timestamp sono tutti uguali, partono dal 1/1/1970, mi sembra strano non ci sia un modo di convertire una data in time con un solo metodo, magari è così e .NET sfrutta una data file tutta sua, anche se sono certo basti indagare un pò per capire il perchè di quegli esatti 369 anni di differenza e come ovviare.
DateTime.ToFileTime() restituisce un intero a 8 byte privo di segno che rappresenta la data e l'ora come numero di intervalli da 100 nanosecondi trascorsi dall'1/1/1601 12 AM. Mentre javascript richiede il numero di millisecondi trascorsi dal 1/1/1970. E 1970 - 1601 = 369
così funziona
codice:var data_server = new Date( <%=DateTime.Now.Year%>, /* anno */ <%=DateTime.Now.Month - 1 %>, /* mese - 1 */ <%=DateTime.Now.Day %>, /* giorno */ <%=DateTime.Now.Hour %>, /* ora */ <%=DateTime.Now.Minute %>, /* minuto */ <%=DateTime.Now.Second %> );/* secondo */ var dd = new Date(<%=Convert.ToInt64(DateTime.Now().Subtract(New DateTime(1970, 1, 1)).TotalMilliseconds)%> ); document.getElementById("div1").innerHTML = data_server + " " + dd ; ottengo Sat Apr 14 20:34:49 UTC+0200 2007 Sat Apr 14 22:34:49 UTC+0200 2007
Pietro
ho visto che i ticks partono dall'anno 0 e non dal 1601 ... quindi i conti non mi tornano comunqueOriginariamente inviato da pietro09
var dd = new Date(<%=Convert.ToInt64(DateTime.Now().Subtract(Ne w DateTime(1970, 1, 1)).TotalMilliseconds)%> );
ma visto che si tratta solo di tempi di partenza differenti, questa dovrebbe essere la più breve, confermi?
codice:var dd = new Date(<%=Convert.ToInt64((DateTime.Now.Ticks-621355968000000000)/10000)%>);
[edit]
già che ci sono, questa è ancora più immediata
e paragonata a questacodice:var dd = new Date(<%=Convert.ToInt64(DateTime.Now.Ticks/10000-62135596800000)%>);
perfino più precisa, dato che setta il time esatto, comprensivo dei millisecondi, in questo esempio non presenti.codice:var data_server = new Date( <%=DateTime.Now.Year%>, /* anno */ <%=DateTime.Now.Month - 1 %>, /* mese - 1 */ <%=DateTime.Now.Day %>, /* giorno */ <%=DateTime.Now.Hour %>, /* ora */ <%=DateTime.Now.Minute %>, /* minuto */ <%=DateTime.Now.Second %> );/* secondo */
[edit 2]
che poi a pensarci bene non serve nemmeno il Convert.ToInt64 ... confermi?
se confermi, fine del problemacodice:var dd = new Date(<%=(DateTime.Now.Ticks/10000-62135596800000)%>;
codice:long DateTimeToJavaScriptTime(DateTime now) { return now.Ticks / 10000 - 62135596800000; }
Gentilissimo Andrea , con tutta sincerità penso che sbagliamo entrambi, e di molto. Stiamo perdendo l'essenza della questione e ci ostiniamo a filosofare sul sesso degli angeli.
Il problema, se ho capito bene è:
Debbo creare un oggetto javascript, Data o Vettore o altro, partendo da un linguaggio server, php, asp, aspx o altro: come fare?:
La mia risposta è:
1) consulta un buon riferimento javascript:
questo è l'indice
http://developer.mozilla.org/en/docs..._1.5_Reference (a mi piace sempre di più)
questo per le date:
http://developer.mozilla.org/en/docs...l_Objects:Date
e questo per i vettori:
http://developer.mozilla.org/en/docs..._Objects:Array
Detto questo, il server deve solamente comporre una stringa compatibile con le esigenze javascript.
A me sembra questa l'essenza della questione.
ps. non per avere l'ultima parola, ma solo per spiegare quello che ho fatto:
se javascript vuole i millesecondi a partire dal 1/1/1970, quello che gli debbo dare è la differenza di tempo di oggi e la data di partenza, 1/1/1970, indipendentemente dallo zero iniziale.
ToFileTime, questa è la funzione che hai usato tu ed è questa che parte dal 1/1/1601
prima ho usato il basic. In c sarebbe lo stesso
var dd = new Date(<%=Convert.ToInt64(DateTime.Now.Subtract(new DateTime(1970, 1, 1)).TotalMilliseconds)%> );
Convert.ToInt64 è necessario per convertire un double in intero, ossia, togliendolo, alert(dd) dà NaN :ignore:
Ciao
Pietro