从.Net发送DateTime到Java Web服务

从.Net发送DateTime到Java Web服务

问题描述:

我在使用Java Web服务时遇到了一些问题,因为我已经使用了简单的Outlook添加,因此我试图与此第三方API进行集成。问题是.Net日期和Java之间的区别,我会诚实地说我对Java不再了解太多。我的问题是,API预计格式为yyyyMMddHHmmss这是很好的日期,但是当我尝试创建使用类似DateTime.ParseExact的东西时,我收到一个错误,指出“字符串未被识别为有效的DateTime”。我不确定我的选择我们的谷歌这次没有真正帮助我。从.Net发送DateTime到Java Web服务

+0

从你的问题中不清楚你是否在寻找.NET侧的解析,从.NET侧进行格式化,还是在Java侧进行格式化?请给出一个示例字符串和你试过的代码。 – 2010-07-09 15:19:24

+0

你是否捕获到导致失败的字符串,看看它的实际外观?无论格式如何,ParseExact都可以正常工作。 – Toby 2010-07-09 15:19:49

+0

你可以发布你的解析代码吗? – Oded 2010-07-09 15:20:22

在.NET方面,你应该能够做这样的事情:

// convert DateTime to string 
return DateTime.Now.ToString("yyyyMMddHHmmss", CultureInfo.InvariantCulture); 

// convert string to DateTime 
if(value.Length != 14) 
    throw new ArgumentException("Value must be 14 characters."); 
int year = Int32.Parse(value.Substring(0, 4)); 
int month = Int32.Parse(value.Substring(4,2)); 
int day = Int32.Parse(value.Substring(6,2)); 
int hour = Int32.Parse(value.Substring(8,2)); 
int minute = Int32.Parse(value.Substring(10,2)); 
int second = Int32.Parse(value.Substring(12,2)); 
return new DateTime(year, month, day, hour, minute, second, 0); 

手工串子解析有点hoakey,但它在技术上的作品。 希望它有帮助!

我认为是做得不对,我不是使用解析确切之前格式的正确格式的日期:

如果
string fd = new DateTime(2010, 07, 10, 01, 00, 00).ToString(); 
string sd = new DateTime(2010, 07, 10, 23, 59, 59).ToString(); 

fd = String.Format("{0:yyyyMMddHHmmss}", DateTime.Parse(fd)); 
sd = String.Format("{0:yyyyMMddHHmmss}", DateTime.Parse(sd)); 

api.searchMessage(null, 
    null, 
    null, 
    "nosort", 
    "archivedate", 
    DateTime.ParseExact(fd, "yyyyMMddHHmmss", null), 
    DateTime.ParseExact(sd, "yyyyMMddHHmmss", null), 
    100); 

不知道它会返回数据,但至少它不示数

+1

看起来你正在向api方法传递一个日期对象,而不是格式为yyyyMMddHHmmss的字符串......如果API很好,那么这很好。事实上,你似乎一直在做很多不必要的转换,从日期到字符串再回来......这可能是测试代码,但如果它的最终代码有点混乱... – Chris 2010-07-09 15:35:15

+0

是啊,它的测试代码,只是试图让我的脑袋绕过日期,这真是一个概念证明。在使用API​​时,期望DateTime不是一个字符串,但是API文档(它只是一点点)告诉我以这种格式传递它。 – Modika 2010-07-09 15:38:49