C# 将DateTime从.Net发送到Java Web服务

C# 将DateTime从.Net发送到Java Web服务,c#,java,.net,web-services,C#,Java,.net,Web Services,我在尝试与这个第三方API集成的简单outlook外接程序中使用的Java web服务存在一些问题。问题是.Net日期和Java日期之间的差异,老实说,我对Java已经不太了解了。我的问题是API希望日期的格式为yyyyMMddHHmmss,这很好,但当我尝试使用诸如DateTime.ParseExact之类的内容创建该日期时,我收到一个错误,指出“字符串未被识别为有效的日期时间。”我不太确定我的选择是什么,因为谷歌这次并没有真正帮助我。在.NET方面,你应该可以这样做: // convert

我在尝试与这个第三方API集成的简单outlook外接程序中使用的Java web服务存在一些问题。问题是.Net日期和Java日期之间的差异,老实说,我对Java已经不太了解了。我的问题是API希望日期的格式为
yyyyMMddHHmmss
,这很好,但当我尝试使用诸如DateTime.ParseExact之类的内容创建该日期时,我收到一个错误,指出“字符串未被识别为有效的日期时间。”我不太确定我的选择是什么,因为谷歌这次并没有真正帮助我。

在.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);
使用子字符串进行手动字符串解析有点像恶作剧,但在技术上是可行的。
希望有帮助

我想我做错了什么,在使用parse exact之前,我没有将日期格式化为正确的格式:

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);

不确定它是否会返回数据,但至少不会出错

您的问题还不清楚-您是在.NET端寻找解析帮助、在.NET端寻找格式化帮助,还是在Java端寻找帮助?请给出一个示例字符串和您尝试过的代码。您是否捕获了导致失败的字符串,以查看其实际外观?如果格式定义正确,ParseExact应该可以工作,不管格式是什么。你能发布解析代码吗?这个Web服务真的希望日期是字符串而不是
xsd:datetime
?Web服务声明它希望日期时间(这就是它要求的)但是文档说明它应该是yyyyMMddHHmmss格式,这就是为什么我一直在尝试使用ParseExact@Jon Skeet,如果我不清楚,很抱歉,我正在.Net客户端上使用Java Web服务。看起来您正在向api方法传递日期对象,而不是格式为yyyyMMddHHmmss的字符串。。。如果API对此没有问题,那么这就很好了。事实上,一般来说,你似乎在做很多不必要的转换,从日期到字符串,再到日期。。。这可能是测试代码,但如果它的最终代码有点混乱…是的,它的测试代码,只是想让我的头脑在传递日期,这真的是一个概念证明。当使用API时,它期望的是一个日期时间,而不是字符串,但API文档(只有一小部分)告诉我以该格式传递它。