في اليومين الماضيين ، كنا نقوم بالتكامل المفرد مع شركة بطولة معروفة (منتجاتنا مكتوبة في Java ، ويتم كتابة برنامج الطرف الآخر في .NET). وهذا هو ، عدد الثواني التي يكون الوقت الحالي نسبة إلى 00:00:00 ميلا 1970-1-1. وفقًا للوثائق التي أعطوها ، أكملت جزء Java.
نسخة الكود كما يلي:
سلسلة خاصة CreateTimestamp () // الطابع الزمني
{
return System.CurrentTimeMillis () / 1000 + "" ؛
}
استخدم طريقة System.CurrentTimeMillis () للحصول على المللي ثانية من الساعة 0:00:00 في 1 يناير 1970 ، وتقسيم 1000 هو بطبيعة الحال عدد الثواني. لكن الحادث وقع.
الوقت الذي تم إنشاؤه بواسطة .NET هو الوقت الحالي للمنطقة الزمنية الحالية ، في حين أن طريقة CurrentTimeMillis () لـ Java هي الوقت من GMT. المنطقة الزمنية التي تقع فيها الصين هي المنطقة +8 ، وبالتالي فإن الفرق الزمني هو 8 ساعات!
لذلك عندما تواجه أحذية الأطفال الوقت غير متسق بين .NET و Java ، فكر في المنطقة الزمنية في كثير من الأحيان ، وربما يمكنك العثور على حل :)
بالطبع سأقدم حلاً:
الطريقة 1: إضافة معلمات عند تشغيل JVM ، حدد المنطقة الزمنية -d user.timezone = gmt+08
الطريقة 2: اضبط المنطقة الزمنية مباشرة في البرنامج. System.SetProperty ("user.timezone" ، "GMT +08") ؛
الطريقة 3: فقط أضف 28800 (8 ساعات*60 دقيقة*60sec = 28800)