ในช่วงสองวันที่ผ่านมาเราได้ทำการรวมเข้าด้วยกันครั้งเดียวกับ บริษัท การ์ดเดียวที่รู้จักกันดี (ผลิตภัณฑ์ของเราเขียนไว้ใน Java และโปรแกรมของอีกฝ่ายเขียนใน. NET) นั่นคือจำนวนวินาทีที่เวลาปัจจุบันสัมพันธ์กับ 00:00:00 AD 1970-1-1 ตามเอกสารที่พวกเขาให้ฉันทำส่วน Java เสร็จแล้ว
การคัดลอกรหัสมีดังนี้:
สตริงส่วนตัว createTimestamp () // timestamp
-
ส่งคืน system.currenttimemillis () / 1000 + "";
-
ใช้วิธี System.currentTimeMillis () เพื่อรับมิลลิวินาทีตั้งแต่เวลา 0:00:00 น. ในวันที่ 1 มกราคม 1970 และการหารด้วย 1,000 คือจำนวนวินาทีตามธรรมชาติ แต่อุบัติเหตุเกิดขึ้น
เวลาที่สร้างโดย. NET เป็นเวลาปัจจุบันของเขตเวลาปัจจุบันในขณะที่วิธีการ CurrentTimeMillis () ของ Java คือเวลาจาก GMT เขตเวลาที่จีนตั้งอยู่คือโซน +8 ดังนั้นเวลาที่แตกต่างกันคือ 8 ชั่วโมง!
ดังนั้นเมื่อรองเท้าเด็กพบเวลาที่ไม่สอดคล้องกันระหว่าง. NET และ Java ให้พิจารณาเขตเวลาบ่อยขึ้นและบางทีคุณอาจหาวิธีแก้ปัญหา :)
แน่นอนฉันจะให้ทางออก:
วิธีที่ 1: เพิ่มพารามิเตอร์เมื่อ JVM รันให้ระบุโซนเวลา -d user.timezone = gmt+08
วิธีที่ 2: ตั้งค่าโซนเวลาโดยตรงในโปรแกรม System.SetProperty ("user.timezone", "GMT +08");
วิธีที่ 3: เพิ่ม 28800 (8hours*60 นาที*60Sec = 28800)