Archivlink: javarea.de Forum > JavaScript > .net datetime in javascript datetime umwandeln
Vollständigen Link anzeigen: javarea.de Forum > JavaScript > .net datetime in javascript datetime umwandeln

Pages: [1]

geschrieben von okley am 01.09.2006 - 14:14
Ich möchte gerne den Rückgabewert von .net DateTimeObjekt.Ticks in ein javascript Date Objekt umwandeln.
Irgendwie komm ich einfach nicht auf das richtige Datum

Hier meine bisherigen Versuche:
HTML-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
// http://www.experts-exchange.com/Pro....89064.html 
// 621355968000000000 is the difference between (Jan 1, 1970 (unix)  and January 1, 0001 (.net)) in .net Ticks

// .netTicks - (Ticks from jan01 0001 to jan01-1970) = CountOfNanoseconds/100 ==> CountOfNanoSeconds *100 / 1000000000 = //// milliseconds

// allgemein: 1 sekunde = 1 000 000 000 nanosekunden
// da javascript als parameterwert anzahl millisekunden vom 1 jan 0001 erwartet sollte es doch möglich sein Anzahl .netTicks in //nanosekunden zu verwandeln und dann in millisekunden:

date = new Date((5244613009661981969-621355968000000000)/10000000);
alert("year: "+date.getFullYear()+" day: "+date.getDate()+" month: "+date.getMonth());



geschrieben von René am 01.09.2006 - 22:34
Hallo okley,

aus dem Code werde ich nicht schlau. Poste doch mal den Timestamp aus dem .NET und das Datum (dd.mm.jjjj - hh:ii:ss) welches sich darunter verbirgt.

geschrieben von weisnix am 02.09.2006 - 08:48
hallo,

so müsste es stimmen:

date = new Date((5244613009661981969-621355968000000000)/10000000000);

Grüssle

geschrieben von okley am 04.09.2006 - 09:02
@weisnix, Dein Vorschlag hat auch nicht hingehauen, hast du ihn ausprobiert?

Also ich versuchs nochmal. Diesmal etwas klarer ausgedrückt ...

In .Net gibt es vom Objekt DateTime eine Eigenschaft Ticks. Ein Tick sind 100nanosekunden. Die Eigenschaft gibt die Anzahl Ticks seit dem 1. Jan 0001 an.
In Javascript arbeitet das Date Objekt mit Millisekunden als Timestamp. 0ms ist dabei der 1. Jan 1970.

Um jetzt in Javascript ein Date Objekt zu erstellen, anhand einer vorhanden Anzahl Ticks, ist mein Problem.
Ich habs folgendermassen versucht:
1. Die Anzahl Ticks die zwischen den beiden 0-Zeitpunkten liegen herausfinden. Das ergibt eine Differenz von 621355968000000000 Ticks.
2. Wenn ich jetzt von meinen gegebenen Ticks, als Beispiel 632929493693272392 (04.09.2006 08:49:29), die Differenz abziehe muss ich das Resultat nur noch von Ticks in Millisekunden umwandeln
3. Den Wert umwandeln und das ganze dem Date-Konstruktor als Millisekunden übergeben.

Berechnung:
Da gilt 1 sek = 1'000millisekunden und 1 Tick = 100ns und 1 sek = 1'000'000'000ns müsste ich doch das Resultat mit *100 in nanosekunden wandeln und mit /1000000 in millisekunden.

Mein Code also:
date = new Date((632929493693272392-621355968000000000)*100/1000000);
sprich
date = new Date((632929493693272392-621355968000000000)/10000);

Heraus kommt 2006.8.4, Warum steht da 8 und nicht 9? Weil wenn ichs mit date.toLocaleDateString(); ausgebe steht: Montag, 4. September 2006

Hoffe mich diesmal verständlicher ausgedrückt zu haben ...

geschrieben von weisnix am 04.09.2006 - 09:43
Zitat
 Original geschrieben von okley am 04.09.2006 - 09:02

@weisnix, Dein Vorschlag hat auch nicht hingehauen, hast du ihn ausprobiert?


Ja.

Ausgangspunkt ist doch der 1.Jan.1970, und der erscheint so:

HTML-Quelltext
1: 
2: 
3: 
4: 
<script type="text/javascript">
date = new Date(621355968000000000/10000000000);
alert("year: "+date.getFullYear()+" day: "+date.getDate()+" month: "+date.getMonth());
</script>





geschrieben von okley am 04.09.2006 - 13:41
Also ich hab jetzt das ganze hinbekommen, dass es funktioniert.

schlussendlich ging es darum ein xslt template zu erstellen um die exportierten testresults (abgespeichert in einer trx datei im xml format) vom neuen visual studio 2005 zu visualisieren. das ist mir jetzt gelungen, hier ist die xslt zu haben:

http://bubblez.ambitiouslemon.com/u....sults.xslt


Powered by: JBB v.2.0.4 Copyright ©2000-2006, www.javarea.de.