首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.NET中的MPXJ将java日期转换为.NET DateTime

.NET中的MPXJ将java日期转换为.NET DateTime
EN

Stack Overflow用户
提问于 2010-06-17 09:38:03
回答 2查看 2.6K关注 0票数 2

我正在使用.NET中的mpxj库来解析微软项目(MPP)文件,它工作得很好。我遇到的一个问题是尝试将任务开始和完成日期转换为.NET DateTime,以便与我的数据模型一起使用。

我正在执行所有任务,并调用task.getFinish()和task.getStart(),这两个函数都返回javva.util.Date对象。

当我使用task.getFinish()、.getYear()、task.getFinish()、.getMonth()等构建一个新的DateTime对象时,它会警告我它们已经过时了。

将开始日期和结束日期从MPXJ导入.NET DateTime对象的最佳方法是什么?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-06-30 14:39:46

我也在使用MPXJ,也有同样的问题。有几种方法可以解决这个问题。我将在下面列出两种方法(我已经使用了这两种方法,但不确定哪种更好):

代码语言:javascript
复制
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转换为字符串,然后使用Date.Parse将其转换为.NET Date变量。我使用可以为null的类型,因为Java Date可以为null。

代码语言:javascript
复制
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的列表。

更新

另一种可能更有效的方法(比字符串解析)如下:

代码语言:javascript
复制
Dim startDate = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddMilliseconds(d.getTime()).ToLocalTime();
票数 3
EN

Stack Overflow用户

发布于 2013-01-22 08:18:06

我知道我在这个问题上晚了两年多,但如果它对你或其他阅读这篇文章的人有用,这里有一个我拼凑在一起(用C#)来处理这个转换的简单的小扩展方法:

代码语言:javascript
复制
internal static DateTime ToDateTime(this java.util.Date javaDate)
{
    var cal = java.util.Calendar.getInstance();
    cal.setTime(javaDate);

    // note that the Month component of java.util.Date  
    // from 0-11 (i.e. Jan == 0)
    return new DateTime(cal.get(java.util.Calendar.YEAR),
                        cal.get(java.util.Calendar.MONTH) + 1,
                        cal.get(java.util.Calendar.DAY_OF_MONTH),
                        cal.get(java.util.Calendar.HOUR_OF_DAY),
                        cal.get(java.util.Calendar.MINUTE),
                        cal.get(java.util.Calendar.SECOND));
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3058367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档