지난 이틀 동안, 우리는 잘 알려진 원 카드 회사와 단일 사인온 통합을 해왔습니다 (우리의 제품은 Java로 작성되었으며 다른 당사자의 프로그램은 .NET로 작성되었습니다). 즉, 현재 시간이 00:00:00 AD 1970-1-1에 비해 초의 수입니다. 그들이 준 문서에 따르면, 나는 Java 부분을 완성했다.
코드 사본은 다음과 같습니다.
개인 문자열 createTimestamp () // timestamp
{
return system.currenttimeMillis () / 1000 + "";
}
1970 년 1 월 1 일 0:00:00에서 밀리 초를 얻으려면 System.CurrentTimeMillis () 메소드를 사용하고 1000으로 나누는 것은 당연히 초 수입니다. 그러나 사고가 발생했습니다. 내가 생성 한 타임 스탬프는 회사가 생성 한 타임 스탬프와 크게 다르면 .NET과 Java 사이의 처리 시간이 차이가 있음을 발견했습니다.
.NET에 의해 생성 된 시간은 현재 시간대의 현재 시간이며, Java의 CurrentTimemIllis () 방법은 GMT의 시간입니다. 중국이 위치한 시간대는 Zone +8이므로 시차는 8 시간입니다!
따라서 어린이 신발이 .NET과 Java 사이의 시간이 일치하지 않으면 시간대를 더 자주 고려하면 해결책을 찾을 수 있습니다. :)
물론 해결책을 제시하겠습니다.
방법 1 : JVM이 실행될 때 매개 변수 추가 시간대 -d user.timezone = gmt+08을 지정합니다.
방법 2 : 프로그램에서 직접 시간대를 설정하십시오. System.setProperty ( "user.timezone", "gmt +08");
방법 3 : 28800 (8 시간*60 분*60sec = 28800)을 추가하십시오.