2010-07-09 108 views
0

我在使用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

回答

-2

在.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,但它在技術上的作品。 希望它有幫助!

0

我認爲是做得不對,我不是使用解析確切之前格式的正確格式的日期:

如果
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