将java中的long值从Date.getTime()转换为VB.Net中的DateTime

时间:2016-05-26 01:30:12

标签: java vb.net

我有两个不同的应用程序,一个使用java和其他使用VB.NET。 java应用程序将对象转换为json并以文本形式保存到数据库

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

perform_date:java中的1462035600000等于“Sun May 01 00:00:00 ICT 2016”,但我尝试在VB.NET中将此数字转换为DateTime但它显示不同的日期“01-Jan-01 12:00 :00:00“。

测试VB.NET代码

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

输出:

01-Jan-01 12:00:00 AM

测试Java代码:

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

输出:

Sun May 01 00:00:00 ICT 2016

我做错了,我是VB.NET的新手。请帮忙

2 个答案:

答案 0 :(得分:2)

Java使用unix时间戳。 你需要在1970年1月1日开始你的日期

如果您在ICT时区,您可以使用LocaL作为日期时间类型的日期时间。否则,您可以将日期时间作为UTC日期时间,然后手动添加7个小时。

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

答案 1 :(得分:0)

你是对的,我没有使用好的转换器......哈哈,但我找到了一些有趣的东西:

Look at the example in VB

如您所见,AddMilliseconds函数在之前声明的日期上添加毫秒数。在添加毫秒之前,您必须默认声明日期。