2016-05-26 6 views
1

Ich habe zwei verschiedene Anwendung, eine mit Java und andere mit VB.NET. Die Java-Anwendung konvertierte Objekt zu json und speichern zu Datenbank als Text als GebrüllKonvertieren langen Wert von Java Date.getTime() zu DateTime in VB.Net

[{"from_time":"07:30:00","end_time":"17:00:00","purpose":"","perform_date":1462035600000,"day_time":false,"night_time":false}] 

perform_date: 1462035600000 in java gleich „Sun 1. Mai 00.00.00 ICT 2016“, aber ich versuche, diese Zahl zu konvertieren DateTime in VB.NET, aber es zeigt ein anderes Datum "01-Jan-01 12:00:00 AM".

Test-VB.NET-Code

Dim d = New Date() 
d.AddMilliseconds(1462035600000) 
Console.WriteLine(CType(d, Date).ToString()) 

Ausgang:

01-Jan-01 12:00:00 AM 

Test-Java-Code:

long d = Long.parseLong("1462035600000"); 
performDate.setTime(d); 
System.out.println(performDate.toString()); 

Ausgang:

Sun May 01 00:00:00 ICT 2016 

Was ich getan habe, ist falsch, ich bin ein Newby auf VB.NET. Bitte helfen Sie

+1

Siehe meine Antwort. Das Datum, an dem Sie addmilliseconds ausführen, sollte vor dem 1. Januar 1970 eingestellt werden. –

+0

Ja, ich teste es. –

Antwort

2

Java verwenden Unix Zeitstempel. Sie müssen Ihr Datum am 1. Januar 1970 initiieren

Wenn Sie in der ICT-Zeitzone sind, könnten Sie wahrscheinlich eine Datetime mit Local als Datetime-Art verwenden. Andernfalls können Sie die Datetime als UTC Datetime ermitteln und dann 7 Stunden manuell hinzufügen.

Dim JavaTimeStamp As Long = 1462035600000 
Dim MyDateTimeUTC as DateTime = GetUTCDateFromTimeStamp(JavaTimeStamp).addhours(7) 'Add 7 hours to match current ICT time (I had no consideration for saving time) 
Dim MyDateTimeLocal as DateTime = GetLocalDateFromTimeStamp(JavaTimeStamp) 

Public Function GetUTCDateFromTimeStamp(TimeStamp as long) As DateTime 
    static startTime As New DateTime(1970, 1, 1, 0, 0, 0,DateTimeKind.Utc) 
    return Starttime.AddMilliseconds(TimeStamp) 
End Function 

Public function GetLocalDateFromTimeStamp(TimeStamp as long) as DateTime 
     static startTime As New DateTime(1970, 1, 1, 0, 0, 0,DateTimeKind.Local) 
    return Starttime.AddMilliseconds(TimeStamp) 
End function 
+0

Vielen Dank, es funktioniert für mich. Aber meine Funktion d.AddMilliseconds (1462035600000) nicht gesetzt d den neuen Datumswert, Es gibt den neuen Datumswert zurück. Also schreibe ich das: d = d.AddMilliseconds (1462035600000) –

0

Du hast Recht, ich habe keinen guten Konverter ... haha, aber ich fand etwas für Sie interessant:

Look at the example in VB

Wie Sie können sehen, die Funktion AddMilliseconds fügt Millisekunden an einem Datum hinzu, das zuvor deklariert wurde. Sie müssen das Datum standardmäßig vor dem Hinzufügen der Millisekunden deklarieren.

+0

Danke, ich habe die Antwort gefunden –