2011-04-11 2 views
3

Java에서 .NET 웹 서비스를 호출하려고합니다. 나는 java.sql.Date를 통해 다음으로 전달되는 달력으로 변환하고있다. DateTime으로 .Net.Axis를 사용하여 .Net 웹 서비스에 Java Date를 전달하는 방법

불행히도, 다른쪽에 도착하면 전송 된 날짜보다 하루 뒤입니다. 이 문제는 per (http://wiki.apache.org/ws/FrontPage/Axis/DotNetInterop)와 같은 알려진 문제이므로 해결 방법이있을 것이라고 확신하지만 찾을 수없는 것 같습니다.

24 시간 오프셋 문제가 없도록 누군가 java.sql.Date를 달력으로 올바르게 변환하는 방법을 알고 있습니까?

java.sql.Date myDate = Date.valueOf("2011-04-11"); 

Calendar calendarDate = Calendar.getInstance(); 
calendarDate.clear(); 

calendarDate.setTime(myDate); //we then pass calendarDate off to webservice... 

나는 다음을 참조 시간대 정보를보고 : 다음 Java에서

는 "동부 표준시 저를 얻는다 (뉴 다음과 같이

내가 지금 가지고있는 코드는 사우스 웨일즈) ": 닷넷에서 다음 날 도착

calendarDate.getTimeZone().getDisplayName(); 

"AUS 동부 표준시 "

TimeZone.CurrentTimeZone.StandardName; 
지금까지 내가 현재 알고로, 자바와 닷넷 모두 동일한 시간대의 현지 시간을

...

답변

1

(가) 제로 오프셋가를 방지 할 수 있도록 보인다 설정

java.sql.Date myDate = Date.valueOf("2011-04-11"); 
Calendar calendarDate = Calendar.getInstance(); 

//normalise the SQL date 
//http://download.oracle.com/javase/6/docs/api/java/sql/Date.html 
calendarDate.set(Calendar.HOUR_OF_DAY, 0); 
calendarDate.set(Calendar.MINUTE, 0); 
calendarDate.set(Calendar.SECOND, 0); 
calendarDate.set(Calendar.MILLISECOND, 0); 

calendarDate.setTime(myDate); 

calendarDate.set(Calendar.DST_OFFSET, 0); //Clear the daylight savings offset 
calendarDate.set(Calendar.ZONE_OFFSET, 0); //Clear the timezone offset 

...이해야 할 올바른 일이 있는지 확실하지 않습니다 ...하지만 그것은 내 문제를 해결 한 것 같다 모두 문제를 상쇄.

  • 자바 날짜는 GMT 플러스 오프셋
  • 축 오프셋 정보없이 닷넷에 날짜를 전달하는 것입니다 :

    나는 자바와 닷넷 웹 서비스는 다음과 같이 상호 작용하는 것 때문에이 작품 생각 .

  • .Net은 실제로 GMT 시간 인 로컬 시간을 가정하며 +/- 24 시간의 오프셋 문제를 발생시킵니다.

날짜를 설정 한 후 오프셋을 0으로 설정하면 날짜가 오프셋없이 로컬 시간과 일치하게됩니다. 따라서 날짜가 .Net 웹 서비스에 도착하면 현지 시간의 가정이 정확합니다. 그런 경우인지하고 더 나은 설명을 부탁드립니다 ...하지만 다른 이야기하지 않는 지금,이 솔루션이 작동하려면 나타나는 경우

나는

0

그 기사에 따르면, .NET은 항상 와우 (로컬 시간대의 날짜를 처리, 그것은 깨졌습니다). 따라서 .net 서비스의 시간대를 결정하고 Calendar 인스턴스에서 해당 시간대를 설정해야합니다.

+0

내가 내 대답을 업데이 트했습니다 ... 아무 생각이 없다 결과는 .net과 java의 타임 존 정보를 볼 때 얻을 수 있습니다. – mezoid

관련 문제