過去2日間で、私たちは有名な1カード会社とのシングルサインオン統合を行っています(当社の製品はJavaで書かれており、1つのパラメーターがタイムスタンプで書かれています)。つまり、現在の時刻が00:00:00 AD 1970-1-1に関連する秒数です。彼らが与えたドキュメントによると、私はJavaの部分を完成させました。
コードコピーは次のとおりです。
private string createTimestamp()//タイムスタンプ
{
return System.currenttimemillis() / 1000 + "";
}
System.CurrentTimemillis()メソッドを使用して、1970年1月1日の0:00:00からミリ秒を取得し、1000秒で割るのは当然のことながら秒数です。しかし、事故が発生しました。
.NETによって生成される時間は現在のタイムゾーンの現在の時間であり、JavaのCurrentTimemillis()メソッドはGMTからの時間です。中国が位置するタイムゾーンはゾーン+8であるため、時差は8時間です!
したがって、子供の靴が.NETとJavaの間で一貫性のない時間に遭遇したとき、より頻繁にタイムゾーンを検討してください。
もちろん、私は解決策を与えます:
方法1:JVMが実行されたらパラメーターを追加し、タイムゾーン-Dユーザーを指定します。TimeZone= GMT+08
方法2:プログラムにタイムゾーンを直接設定します。 System.setProperty( "user.timezone"、 "gmt +08");
方法3:28800を追加するだけです(8時間*60分*60sec = 28800)