我也使用MPXJ和有同樣的問題。有幾種方法可以解決這個問題。下面我將概述兩種方式(我都用了,我不知道哪個是更好):
Dim cal As New GregorianCalendar()
cal.setTime(task.getStart())
'have to add one to month value because it is 0 - 11
Dim startDate as New Date(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH) + 1, cal.get(Calendar.DAY_OF_MONTH), cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND))
這是方式,他們希望你這樣做時,他們說,.getYear已經過時了。
另一種方法我已經做到了,是將Java日期轉換爲字符串,然後用Date.Parse把它變成一個.NET日期變量。我使用可空類型,因爲Java日期可能爲空。
Dim d as java.util.Date = t.getStart()
Dim startDate As New Nullable(Of Date)
If d IsNot Nothing Then
Dim dateString As String = New java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(d)
startDate = Date.Parse(dateString)
End If
如果您不需要所有部件,或者您想包含時區信息,則可以使用不同的日期格式字符串。以下是format string choices for Java的列表。
更新
另一個,也許這樣做(除了字符串解析)的更好的性能,方法如下:
Dim startDate = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddMilliseconds(d.getTime()).ToLocalTime();